(if: $inningcount <= 4 and $promisingRookieStoryline is 0 and $homeHitterStoryline is 0 and $craftyVeteranStoryline is 0 and $visitingHitterStoryline is 0)[ With the game just underway, and not much of note happening yet, the announcers narrate the action while hyping up Klarines and their "considerable power" as an important new sponsor. ] (else-if: $inningcount <= 6 and $promisingRookieStoryline is 1)[ The announcers talk about how the Promising Rookie pitcher has what it takes to anchor the Home Team's rotation this year. (if: $homeHitterStoryline is 0)[ ] (else-if: $homeHitterStoryline is 1)[ Combined with the Flashy Up-And-Comer's great game thus far, they speculate about the two of them heralding a new era of greatness for the Home Team. ] (else-if: $homeHitterStoryline is 2)[ They combine this with the Clubhouse Leader's great play in this game, and speculate on how the Leader might be integral to the Promising Rookie's development. ] (else-if: $homeHitterStoryline is 3)[ They talk about the non-linear development of young baseball players, as exemplified by the Flashy Up-And-Comer's tough game thus far. ] (else-if: $homeHitterStoryline is 4)[ They combine this with the Clubhouse Leader's tough game thus far, and wonder if this year might be a changing-of-the-guard around who is front and center on this club. ] ] (else-if: $inningcount <= 6 and $promisingRookieStoryline is 2)[ The announcers talk about how important it is for the rest of the team to pick up the slack for the Home Team's Promising Rookie pitcher, and how important that can be for a young player who puts a lot of pressure on himself. (if: $homeHitterStoryline is 0)[ ] (else-if: $homeHitterStoryline is 1)[ Combined with the Flashy Up-And-Comer's great game thus far, they talk about the non-linear development paths for young baseball players. ] (else-if: $homeHitterStoryline is 2)[ They combine this with the Clubhouse Leader's great play in this game, and speculate on how their relationship may be integral to the Promising Rookie's development. ] (else-if: $homeHitterStoryline is 3)[ They mention the Flashy Up-And-Comer's tough game thus far, too, and the mysterious role experience plays in baseball. ] (else-if: $homeHitterStoryline is 4)[ They combine this with the Clubhouse Leader's tough game thus far, and talk about how it's so often the unheralded players on teams that make the biggest difference. ] ] (else-if: $inningcount >= 7 and $inningcount <= 12 and $craftyVeteranStoryline is 1)[ The announcers talk about the resilience and skill of the Away Team's Crafty Veteran pitcher. (if: $homeHitterStoryline is 0)[ ] (else-if: $visitingHitterStoryline is 1)[ Combined with the Away Team's Scrappy Overachiever's great game so far, they talk about how beautiful it is that baseball's a game that doesn't require overwhelming athleticism to excel at. ] (else-if: $visitingHitterStoryline is 2)[ They combine this with the Away Team's Played-On-Both-Teams player's great play in this game, and talk about how having a "chip on your shoulder" can be a big factor for baseball players. ] (else-if: $visitingHitterStoryline is 3)[ They talk about the narrow margin of error for players without incredible physical "tools" — as evidenced by the Away Team Scrappy Overachiever's tough game. ] (else-if: $visitingHitterStoryline is 4)[ They contrast this with the Away Team's Played-On-Both-Teams player's tough game thus far, and talk about whether he might be "pressing" — trying too hard, because he's playing against his former team. ] ] (else-if: $inningcount >= 7 and $inningcount <= 12 and $craftyVeteranStoryline is 2)[ The announcers discuss whether the Away Team's Crafty Veteran might be "over the hill," as far as performance goes. (if: $homeHitterStoryline is 0)[ ] (else-if: $visitingHitterStoryline is 1)[ Combined with the Away Team Scrappy Overachiever's great game thus far, they talk about how it could be that the Crafty Veteran is "pressing" — trying too hard to prove his continued worth. ] (else-if: $visitingHitterStoryline is 2)[ They contrast with the Away Team's Played-On-Both-Teams player's great work in this game, and talk about how having a "chip on his shoulder" to play better against his former team might be a factor. ] (else-if: $visitingHitterStoryline is 3)[ They mention the Away Team Scrappy Overachiever's tough game thus far, too, and how narrow the margin of error is for baseball players. ] (else-if: $visitingHitterStoryline is 4)[ They consider the same with the Away Team's Played-On-Both-Teams player — as he too's had a tough game thus far — and how Father Time is undefeated in sports. ] ] (else:)[ They're just jabbering away. ](link: "The Announcer begins speaking...")[ //AI-generated text will load momentarily...// <p id="gpt" style="white-space:pre-line;"></p> <script> console.log("DEBUG - harloweVariables.gameSummary:", harloweVariables.gameSummary); console.log("DEBUG - all harloweVariables:", harloweVariables); const gameSummary = harloweVariables.gameSummary; const prompt = `At the end of this prompt is a short description of the notable players in a baseball game, how they've played, and what those implications are. Please use this description to create a short piece of performance text — in the voice of a classic radio baseball announcer — in which the Announcer brings up the context of the game, then welcomes and brings in a visitor into the broadcast (the recipient of this text) as the ACTUAL focus of the game all along, and then asks them for a piece of commentary on how they think they've "played" today. The text should be no longer than five sentences, and be mindful that this will take place in one of many possible areas around a baseball stadium — but not in an announcer's booth. It shouldn't reference anything about the baseball game (score, inning, actual names of players, etc.) besides what's included in the description at the end of the prompt; it also shouldn't mention the time of day, or anything specific about what the participant has done within the game or wider experience of the game. The final portion of the outputted text should be a literal question about how the visitor thinks they've performed today. Please format with a line that reads "ANNOUNCER", then a line break, then the generated performance text. ${harloweVariables.gameSummary}`; console.log(prompt); (async () => { const response = await fetch('https://api.anthropic.com/v1/messages', { method: 'POST', headers: new Headers({ 'x-api-key': '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', 'anthropic-version': '2023-06-01', 'anthropic-dangerous-direct-browser-access': 'true', 'Content-Type': 'application/json' }), body: JSON.stringify({ model: "claude-sonnet-4-20250514", max_tokens: 1024, messages: [{"role": "user", "content": prompt}] }) }); const json = await response.json(); console.log(json); const passage = document.getElementsByTagName("p")[0]; passage.textContent = json.content[0].text; })(); </script> (link: "Respond.")[ (set: $announcerOneOnOneResponse to (prompt: "The Announcer holds their microphone to your mouth.", "")) You responded: $announcerOneOnOneResponse [[Continue.|AnnouncersAppOneOnOneEnd]] ] ](link: "The Announcer continues...")[ //AI-generated text will load momentarily...// <p id="gpt" style="white-space:pre-line;"></p> <script> console.log("DEBUG - harloweVariables.$announcerOneOnOneList:", harloweVariables.$announcerOneOnOneList); console.log("DEBUG - harloweVariables.$announcerOneOnOneResponse:", harloweVariables.$announcerOneOnOneResponse); console.log("DEBUG - all harloweVariables:", harloweVariables); const actionsList = harloweVariables.$announcerOneOnOneList; const response = harloweVariables.$announcerOneOnOneResponse; const prompt = `At the end of this prompt is a description of actions a participant performed within an immersive experience at a baseball stadium. Please create a piece of performance text — in the voice of a classic radio baseball announcer — that weaves in the actions from this description, and frames the person being spoken to as a player in the "game" of their own life. Please format this by starting with the text "The Announcer holds their microphone to their mouth.", then a line break, then "ANNOUNCER", then the text directly under that word. The first sentence should directly thank the person being spoken to for joining them and providing their thoughts; do not provide any introductory text in this sentence, and do not address a broader, imagined broadcast audience. The second sentence should describe — now to a broader, imagined broadcast audience — how the person that was being spoken to is now leaving the Announcer's side, going onto the field of play, and stepping up to the plate. Use the metaphor of the various entries from the list representing separate pitches in the "at-bat" of their experience — using specific events that happen in a baseball at-bat to draw the comparison, such as the batter taking a curveball in the dirt for a ball, or the batter fouling off a 100 mph fastball up in the zone. The performance text should end with the at-bat ending, and the participant getting some type of hit (please specify which), in a way that relates directly to this answer they gave about how the baseball game relates to their life, which was: "${response}". Please specifically refer back to that comment, using a phrase like "Just as this player told us just moments ago..." Please also put a line of empty space between each point in the performance, as well as before the piece of performance text. Be mindful that this will take place in one of many possible areas around a baseball stadium — but not in an announcer's booth. ACTIONS: ${harloweVariables.announcerOneOnOneList}`; console.log(prompt); (async () => { const apiResponse = await fetch('https://api.anthropic.com/v1/messages', { method: 'POST', headers: new Headers({ 'x-api-key': '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', 'anthropic-version': '2023-06-01', 'anthropic-dangerous-direct-browser-access': 'true', 'Content-Type': 'application/json' }), body: JSON.stringify({ model: "claude-sonnet-4-20250514", max_tokens: 1024, messages: [{"role": "user", "content": prompt}] }) }); const json = await apiResponse.json(); console.log(json); const passage = document.getElementsByTagName("p")[0]; passage.textContent = json.content[0].text; })(); </script> [[And the Announcer is gone.|AppCheck]] ] (set: $announcersOnOnOneDone to true)(align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''PA ANNOUNCER'' Attention, fans: Our team of announcers would like to hear YOUR insights on the incredible performances tonight. Please go to your Home Game app right away to schedule your interview.] (link: "Return to what you were doing.")[(go-to: $currentPassage)] (set: $missions to "//Open Phone App to Meet Your Announcer//")You schedule a one-on-one with an unnamed Announcer. The app gives you a time and place to meet them. [[Go to the one-on-one.|AnnouncersAppOneOnOneStart]] [[Return.|AppCheck]] (display: "appCommonCode") (set: $announcerOneOnOneList to "") (if: $homeTeamNewEra is true and $visitingTeamChip is true)[(set: $gameSummary to "The action on the field has brought talent (the Home Team's young players) into conflict with motivation (the chip-on-the-shoulder attitude of the Away Team's players).") ] \ (if: $homeTeamNewEra is true and $visitingTeamPressing is true)[(set: $gameSummary to "The young Home Team players are thriving, while the pressure-packed Away Team players are not.") ] \ (if: $homeTeamChangingGuard is true and $visitingTeamChip is true)[(set: $gameSummary to "The older Home Team players have struggled alongside the intense Away Team players, and there may be complex reasons why this has happened.") ] \ (if: $homeTeamChangingGuard is true and $visitingTeamPressing is true)[(set: $gameSummary to "Much of baseball is mental, as is exhibited in the game thus far: both the Home Team's veterans and much of the Away Team's best players seem to be pressing.") ]You follow your GPS to meet with the Announcer: dressed smartly in a suit jacket, holding a microphone in one hand. You may notice that the Announcer was previously a different character in that part of the ballpark (e.g. a bored teenage employee in the Fun Zone, or a salesperson in the Gift Shop). You may also notice many other one-on-ones happening around you. The Announcer greets you. [[Start the one-on-one.|AnnouncersAppOneOnOneBeginning]] (if: $talkedToScreener is true)[(set: $announcerOneOnOneList to it + "You talked to the Metal Detector screener — showing a general friendliness. ")] (if: $seeRootTeamPoster is true)[(set: $announcerOneOnOneList to it + "You found the ROOT FOR A TEAM AND THE TEAM ROOTS IN YOU poster — showing that you're interested in finding and observing the details in things. ")] (if: $phoneAnthemAbstain is true)[(set: $announcerOneOnOneList to it + "You abstained from playing the National Anthem on your phone. ")] (if: $phoneAnthemSuccess is true)[(set: $announcerOneOnOneList to it + "You played the National Anthem well on your phone — showing good coordination and sense of musicality. ")] (if: $phoneAnthemFailure is true)[(set: $announcerOneOnOneList to it + "You didn't play the National Anthem very well on your phone. ")] (if: $merchRotatingShelfSeen is true)[(set: $announcerOneOnOneList to it + "You looked at the rotating merch shelf — showing an interest in the more unusual aspects of a space. ")] (if: $specialZonesTeeSeen is true)[(set: $announcerOneOnOneList to it + "You pulled out the pink Klarines Special Zones tee shirt in the Gift Shop — showing an interest in maps and hidden locations. ")] (if: $retroTechTeeSeen is true)[(set: $announcerOneOnOneList to it + "You pulled out the black retro-tech tee shirt in the Gift Shop — showing an interest in retro technology. ")] (if: $psychedelicScreenTeeSeen is true)[(set: $announcerOneOnOneList to it + "You pulled out the blue psychedelic tee shirt in the Gift Shop — showing an interest in the trippy and unusual. ")] (if: $whiteLetteringTeeSeen is true)[(set: $announcerOneOnOneList to it + "You pulled out the white tee shirt with a huge block of black text in the Gift Shop — showing an interest in amusing usage of language. ")] (if: $counterfeitTeeSeen is true)[(set: $announcerOneOnOneList to it + "You pulled out the gray counterfeit-looking tee shirt in the Gift Shop — showing an interest in anomolies and the ersatz. ")] (if: $pickUpAwayTeamMerch is true)[(set: $announcerOneOnOneList to it + "You picked up a piece of Away Team merch that was mixed in with the Home Team apparel — showing an interest in differences amongst things. ")] (if: $klarinesStageShowWatched is true)[(set: $announcerOneOnOneList to it + "You watched a section of the Fun Zone stage show, showing an interest in the performance arts. ")] (if: $klarinesZoneTalkedToAwayTeamPerson is true)[(set: $announcerOneOnOneList to it + "You talked to someone pacing in the Fun Zone about how to root for the Away Team — showing an interest in hearing a variety of perspectives. ")] (if: $wentDownPlaygroundSlide is true)[(set: $announcerOneOnOneList to it + "You went down the playground slide in the Fun Zone — showing a sense of whimsy and fun. ")] (if: $klarinesBurnoutsYay is true)[(set: $announcerOneOnOneList to it + "You helped two Klarines workers who seemed bored with their jobs — showing a desire to help others. ")] (if: $klarinesBurnoutsBlah is true)[(set: $announcerOneOnOneList to it + "You walked away from helping two Klarines workers who seemed bored with their jobs. ")] (if: $chalkGameSuccess is true)[(set: $announcerOneOnOneList to it + "You successfully drew a strike zone in AR in the Fun Zone — showing good hand-eye coordination. ")] (if: $newGameAppPlaying is true)[(set: $announcerOneOnOneList to it + "You participated in the Klarines New Game — showing an interest in novel, experimental forms of engagement. ")] (if: $diehardSign is true)[(set: $announcerOneOnOneList to it + "You got a Diehard fan sign — showing an intensity around sports fandom. ")] (if: $hackersInitiated is true)[(set: $announcerOneOnOneList to it + "You joined the Hacker movement — showing an interest in subversive actions. ")] (if: $bouncerTurncoatToDiehard is true)[(set: $announcerOneOnOneList to it + "You were able to convince a bouncer to let you into a restricted club — showing good social skills and persuasive abilities. ")] (if: $blowOffClubInitiation is true)[(set: $announcerOneOnOneList to it + "You were invited to an exclusive club and blew it off — showing an independence and unwillingness to conform. ")] (if: $KnightedInitiationFeed is true)[(set: $announcerOneOnOneList to it + "You engaged with a theatrical performance within a secret club — showing an interest in exclusive and immersive experiences. ")] (if: $liar is true)[(set: $announcerOneOnOneList to it + "You lied about your fandom to gain access to a secret club — showing a willingness to deceive. ")] (if: $concessionsTrier is 3)[(set: $announcerOneOnOneList to it + "You tried a variety of food options — showing an adventurous palate. ")] (if: $listenToRadio is true)[(set: $announcerOneOnOneList to it + "You listened to the radio broadcast of the game — showing an interest in the game itself, beyond the experience of the stadium. ")] (if: $watchingGameCounter >= 3)[(set: $announcerOneOnOneList to it + "You spent significant time watching the game without any other interactions — showing an interest in the sport of baseball. ")] (if: $newGameEngagementAnswer is true)[(set: $announcerOneOnOneList to it + "You talked to someone you didn't know beforehand in the stadium, showing a social opennenss. ")] (if: $photoWithHomeGameMascot is true)[(set: $announcerOneOnOneList to it + "You took a photo with the Home Game mascot. ")] (display: "appCommonCode")(set: $previousPassage to $currentPassage) (set: $currentPassage to "AppCheck") (if: not ($previousPassage contains "App"))[(set: $locationBeforePhone to $previousPassage)] (set: $previousPassage to $currentPassage) (set: $currentPassage to "AppCheck") The Home Game app interface is covered in Klarines branding. Along with relevant stats, it prominently displays the current score: ''Home Team $homeTeamScore, Away Team $awayTeamScore.'' <span style="display: inline;"> (if: $KnightedClubMember is true)[You see an alert, which reads: THE KNIGHTED NEED YOU. [[Open this alert.|SeatKnightedClubApp]]<br>] (if: $diehardFanInfo is true)[You see an alert, which reads: OPEN THIS IF YOU CARE ABOUT WINNING. [[Open this alert.|DiehardAppOpen]]<br>] (if: $hackersApp is true)[You see an alert, which reads: THIS IS MORE FUN THAN BASEBALL. [[Open this alert.|HackerAppOpen]]<br>] (if: $klarinesNewGame is true)[You see an alert, which reads: THE NEW GAME WOULD LOVE YOUR HELP. [[Open this alert.|KlarinesNewGameAppOpen]]<br>] (if: $rebellionApp is true)[You see an alert, which reads: THE AWAY TEAM WON'T GO AWAY. [[Open this alert.|RebellionAppOpen]]<br>] (if: $inningcount >= 14 and $announcersOnOnOneDone is not true)[You see an alert, which reads: MEET YOUR ANNOUNCER? [[Open this alert.|AnnouncersAppOneOnOneSchedule]]<br>] </span> (link: "Put your phone away.")[ (go-to: $locationBeforePhone) ]The radio's playing in the bathroom. You listen to the announcers as the teams play the (if: $inningcount is 1)[(print: "top of the 1st inning.")\ ](else-if: $inningcount is 2)[(print: "bottom of the 1st inning.") ](else-if: $inningcount is 3)[(print: "top of the 2nd inning.") ](else-if: $inningcount is 4)[(print: "bottom of the 2nd inning.") ](else-if: $inningcount is 5)[(print: "top of the 3rd inning.") ](else-if: $inningcount is 6)[(print: "bottom of the 3rd inning.") ](else-if: $inningcount is 7)[(print: "top of the 4th inning.") ](else-if: $inningcount is 8)[(print: "bottom of the 4th inning.") ](else-if: $inningcount is 9)[(print: "top of the 5th inning.") ](else-if: $inningcount is 10)[(print: "bottom of the 5th inning.") ](else-if: $inningcount is 11)[(print: "top of the 6th inning.") ](else-if: $inningcount is 12)[(print: "bottom of the 6th inning.") ](else-if: $inningcount is 13)[(print: "top of the 7th inning.") ](else-if: $inningcount is 14)[(print: "bottom of the 7th inning.") ](else-if: $inningcount is 15)[(print: "top of the 8th inning.") ](else-if: $inningcount is 16)[(print: "bottom of the 8th inning.") ](else-if: $inningcount is 17)[(print: "top of the 9th inning.") ](else-if: $inningcount is 18)[(print: "bottom of the 9th inning.")] The score is Home Team $homeTeamScore, Away Team $awayTeamScore. (display: "AnnouncerText") [[Finish your business and return to the concourse.|ExploreMainBranch]] (display: "CommonCode")It looks something like this... <a href="https://ibb.co/9HVM9tcn"><img src="https://i.ibb.co/qYWZM57B/Chat-GPT-Image-Dec-2-2025-12-02-34-PM.png" alt="Chat-GPT-Image-Dec-2-2025-12-02-34-PM" border="0"></a> [[Return.|WatchGameInSeats]] (display: "CommonCode") (set: $concessionsTrier to it + 1)<a href="https://ibb.co/ztkynB1"><img src="https://i.ibb.co/csmGgZP/Chat-GPT-Image-Dec-2-2025-02-11-57-PM.png" alt="Chat-GPT-Image-Dec-2-2025-02-11-57-PM" border="0"></a> [[Return.|ExploreMainBranch]] (display: "CommonCode") (set: $concessionsTrier to it + 1)Sounds vaguely familiar... <a href="https://ibb.co/9kkkH1BT"><img src="https://i.ibb.co/PvvvGPJh/Chat-GPT-Image-Dec-2-2025-12-29-13-PM.png" alt="Chat-GPT-Image-Dec-2-2025-12-29-13-PM" border="0"></a> [[Return.|WatchGameInSeats]] (display: "CommonCode") (set: $concessionsTrier to it + 1)Mmm... <a href="https://ibb.co/chD3jpkP"><img src="https://i.ibb.co/4RPtHDKc/Chat-GPT-Image-Dec-2-2025-12-08-35-PM.png" alt="Chat-GPT-Image-Dec-2-2025-12-08-35-PM" border="0"></a> [[Return.|WatchGameInSeats]] (display: "CommonCode") (set: $concessionsTrier to it + 1)It helps soften the blow of the game score, for sure... <a href="https://ibb.co/VYZQxMZg"><img src="https://i.ibb.co/9HLVhyLb/Chat-GPT-Image-Dec-2-2025-02-05-32-PM.png" alt="Chat-GPT-Image-Dec-2-2025-02-05-32-PM" border="0"></a> [[Return.|ExploreMainBranch]] (display: "CommonCode") (set: $concessionsTrier to it + 1)Yum... <a href="https://ibb.co/m5KpXWFx"><img src="https://i.ibb.co/HTyZx8pJ/Chat-GPT-Image-Dec-2-2025-12-35-47-PM.png" alt="Chat-GPT-Image-Dec-2-2025-12-35-47-PM" border="0"></a> [[Return.|ExploreMainBranch]] (display: "CommonCode") (set: $concessionsTrier to it + 1)It's like the cheese is running circles around the frank... <a href="https://ibb.co/nN5W0Vc0"><img src="https://i.ibb.co/DHSqb6Cb/Chat-GPT-Image-Dec-2-2025-01-56-49-PM.png" alt="Chat-GPT-Image-Dec-2-2025-01-56-49-PM" border="0"></a> [[Return.|ExploreMainBranch]] (display: "CommonCode") (set: $concessionsTrier to it + 1)How do they get them stacked like that, you wonder... <a href="https://ibb.co/C5688vF0"><img src="https://i.ibb.co/vxhqqm8z/Chat-GPT-Image-Dec-2-2025-12-17-03-PM.png" alt="Chat-GPT-Image-Dec-2-2025-12-17-03-PM" border="0"></a> [[Return.|WatchGameInSeats]] (display: "CommonCode") (set: $concessionsTrier to it + 1)The AR interaction ends, and a message comes up on your screen: (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[//BASEBALL IS A GAME OF FAILURE. YOU HAVE WON THE GAME. WELCOME.//] Tap the screen. (click-replace: "Tap the screen.")[A new message. (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[//YOU ARE TRULY ONE OF US NOW. SIGN UP BELOW IF YOU WANT A FULL INITIATION.//] [[Sign up for a slot.|KnightedInitiationApp]] [[Go back.|AppCheck]]] (set: $chalkGame to false) (display: "appCommonCode")A message comes up on your screen: (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[//YOU SUCCEEDED. KEEP TRYING.//] [[Return.|SeatKnightedClubApp]] (set: $chalkGameSuccess to true) (display: "appCommonCode")//TO BE WRITTEN// [[Return.|GiftShopEntrance]]//TO BE WRITTEN// [[Return.|FigurinesZoneNo1]]//TO BE WRITTEN// [[Return.|FigurinesZoneNo2]]//TO BE WRITTEN// [[Return.|FigurinesZoneNo3]](if: $awayTeamScore > $homeTeamScore)[(align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''BARTENDER'' I guess we're holding out for a comeback here. Unless you're more the pessimistic type? Where do you stand on all that?] [[You answer. Bartender improvises a bit of convo with you.|ClubBarMenu]]] \ (if: $awayTeamScore < $homeTeamScore)[(align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''BARTENDER'' Looks like the home team's on top for now. Does that make you feel any sort of way?] [[You answer. Bartender improvises a bit of convo with you.|ClubBarMenu]]] \ (if: $awayTeamScore is $homeTeamScore)[(align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''BARTENDER'' Tie games make me feel calm, weirdly. Like a natural equilibrium's been established. Can you relate? Or am I nuts?] [[You answer. Bartender improvises a bit of convo with you.|ClubBarMenu]]] (display: "CommonCode")//TO BE WRITTEN// [[Return.|ClubBarMenu]]//TO BE WRITTEN// [[Return.|ClubBarMenu]]An alert appears on your app: (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[//YOU ARE NOW A MEMBER OF THE KNIGHTED CLUB. SIT IN YOUR SEAT, WATCH THE GAME, AND OPEN THIS ALERT.//] [[Look back out at the room.|ClubInsideMain]] (set: $KnightedClubMember to true) (set: $KnightedClubMemberHistory to true) (set: $BartenderDone to true) (display: "CommonCode")The Bartender nods. (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''BARTENDER'' We're a bit private about our drinks here. Are you okay with having your menu tied over your eyes while it's being prepared?] [[Yes.|ClubBarHistoryStoryBegin]] [[No.|ClubBarHistoryStoryNoBlindfold]] (display: "CommonCode")The Bartender ties the menu around your eyes. (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''BARTENDER'' Do you know what a foul ball is?] Yes. No. (click: "Yes.")[(replace: "No.")[](replace: "Yes.")[Yes. (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''BARTENDER'' Good. Great. Well. In the beginning, there was no such thing as a foul ball. Every time the bat made contact, the batter was off and running. When I imagine that early game — they were playing it in the mid-1800s, calling it "town ball" — I imagine them in an open field. Wool pants. A whirl of horizon, all around. And nobody watching. How could you? If you were close enough to see, you were in the field of play! A part of the game! But then I think this: One day, someone ended up watching, anyway. Maybe they wanted to play, but weren't very good, so both teams just kinda ignored them. Maybe they got unlucky and never had a ball hit their way the whole game...so they just sat down and accepted their fate. Or maybe they were in the far distance, after all. Just close enough to hear the crack of the bat, the thud of ball against leather. Whatever made it happen, and whoever that person was, they were the first to stand on the line between player and spectator. They weren't throwing the baseball, they weren't giving signs to the runners...but they were far from passive. That person was the first of us. That person was our history. You can take your menu off, whenever you're ready.] [[Take your menu off.|ClubBarHistoryStoryEnd]]]] (click: "No.")[(replace: "Yes.")[](replace: "No.")[No. (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''BARTENDER'' That's okay. So foul territory is the space between the crowd and the two chalk lines on the field. If a batter hits a ball anywhere in that territory, it's a foul ball. Nothing else can happen on that play. Yeah? So. In the beginning, there was no such thing as a foul ball. Every time the bat made contact, the batter was off and running. When I imagine that early game — they were playing it in the mid-1800s, calling it "town ball" — I imagine them in an open field. Wool pants. A whirl of horizon, all around. And nobody watching. How could you? If you were close enough to see, you were in the field of play! No foul balls, right? But then I think this: One day, someone ended up watching, anyway. Maybe they wanted to play, but weren't very good, so both teams just kinda ignored them. Maybe they got unlucky and never had a ball hit their way the whole game...so they just sat down and accepted their fate. Or maybe they were in the far distance, after all. Just close enough to hear the crack of the bat, the thud of ball against leather. Whatever made it happen, and whoever that person was, they were the first to stand on the line between player and spectator. They weren't throwing the baseball, they weren't giving signs to the runners...but they were far from passive. That person was the first of us. That person was our history. You can take your menu off, whenever you're ready.] [[Take your menu off.|ClubBarHistoryStoryEnd]]]] (display: "CommonCode")You open your eyes, and see a drink in front of you...something like this: <a href="https://imgbb.com/"><img src="https://i.ibb.co/VcGPHz96/Bar-History-Drink.png" alt="Bar-History-Drink" border="0"></a> The Bartender has moved on to another person. There's a QR code on the back of the glass. [[Scan the code on your app.|ClubBarHistoryQRCode]] (display: "CommonCode")The Bartender nods again, and hands you a slip of paper. (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''BARTENDER'' Scan that on your phone. That's all you really need to imbibe here.] [[Scan the code on your app.|ClubBarHistoryQRCode]] (display: "CommonCode")The Bartender slips you a menu, printed on cloth. (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''BARTENDER'' Take your time. I know you've got some sharpened senses...otherwise you wouldn't have made it here.] <a href="https://ibb.co/v4KPCF1C"><img src="https://i.ibb.co/pj9z6726/Bar-Menu-2.png" alt="Bar-Menu-2" border="0"></a> [[Order The History.|ClubBarHistoryStory]] [[Order The Crisis. //(TO BE WRITTEN)//|ClubBarCrisisStory]] [[Order The Endgame. //(TO BE WRITTEN)//|ClubBarEndgameStory]] (display: "CommonCode")(align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''BOUNCER'' Well, at least it's easy to find them, eh? Next!] [[Return to the Gift Shop.|GiftShopEntrance]] (display: "CommonCode")(align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''BOUNCER'' We never talked about this.] [[Enter the club.|ClubInitiationStart]] (link: "Blow off the initiation appointment and go back to the Gift Shop.")[ (set: $KnightedClubMember to false) (set: $blowOffClubInitiation to true) (go-to: "GiftShopEntrance") ] (display: "CommonCode")You scan the code. They smile. (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''BOUNCER'' //(in a whisper)// Check your app. Everything you need should show up.] They beckon you through the door. [[Enter the club.|ClubInitiationStart]] (link: "Blow off the initiation appointment and go back to the Gift Shop.")[ (set: $KnightedClubMember to false) (set: $blowOffClubInitiation to true) (go-to: "GiftShopEntrance") ] (set: $diehardFanInfo to true) (set: $bouncerTurncoatToDiehard to true) (display: "CommonCode")He nods, and pulls the curtain back. (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''BOUNCER'' Welcome.] [[Go in.|ClubInsideMain]] (display: "CommonCode")(align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''HOST'' Hmm. It seems you are powerful in the art of deception. If you go to your phone, you will be connected to those who can use that power. In the meantime: allow me to show you out.] [[Leave the club.|GiftShopEntrance]] (set: $KnightedClubMember to false) (set: $liar to true) (display: "CommonCode")(align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''HOST'' Yes. I know that's what you believe. You'll find, on your phone, a connection to those who think like you do. We, however, do not. Allow me to show you out.] [[Leave the club.|GiftShopEntrance]] (set: $KnightedClubMember to false) (display: "CommonCode")(align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''HOST'' Hello. We’re playing a game today. It’s called baseball. But it’s also called your life. Right? Aren’t you here for both? Don't they merge into one thing, when you go to a baseball game? So maybe you’ll start to understand me now when I say: Baseball is not about baseball. That is something we believe here. As part of this group. You started watching a baseball game. Now, you’re here. In the same way, baseball was born as a game. But then it grew up. Just like you. Did you know that tarot cards were invented for a game? It was played in Italy in the 1400s. The cards started being used to tell fortunes in the 1700s. So: you could imagine that it takes around 300 years for a game to start taking in greater symbolic meaning. The first baseball game was played in 1846: 180 or so years ago. Close enough. Baseball is not about baseball. Baseball was invented by human hands and minds, and shaped and refined over many decades… But we believe there were forces guiding that shaping. Not supernatural forces, necessarily, but forces that bring baseball into powerful alignment with the deeper human struggles. The deeper journeys. At first glance, baseball is composed of a series of Wild West shootout-style showdowns. A pitcher against a batter. One on one. And that can feel like the nature of our lives, too, can’t it? Us against the task at hand. The thing to be done. The adversary. Over and over and over. But a batter does not exist in a vacuum. They are part of a lineup. To be the batter is to be one in a chain. To depend on those before you to get on base, to give you the opportunity to bring them home. To get on base yourself, to give those who come after you to bring you home. Hitting is selfish, but being in a lineup is not. Pitching is selfish, too…until the moment the bat hits the ball. Then — once again — being a pitcher is being one in a collective. A collective united in tracking that baseball, catching it, and connecting to one another via the medium of throws, for the sake of finishing what the pitcher themself hoped to begin: Getting an out. An out is a bizarre thing. A peculiar thing. A magical thing. A baseball game is not set to a length of time. It's set to a collective toil: scoring more runs than the other team, sure, but not just that: making enough outs to end the game. But it's not just outs you have to collect...there are outs you have to MAKE. If your team stops recording outs, keeps getting hits, keeps scoring, a baseball game will never end. A clock does not move us through life. Our outs do. You can time a baseball game, but that tells you nothing about what happened in it. It’s the same when you time the length of a life. Whether you win or lose, both teams will make twenty-seven outs in a nine-inning baseball game. You have to. No matter how long you live, you will try things and you will fail. You will want things and you will not get those things. In other words: you will make outs. There is no way around it. The out is a necessary form of failure. For most, baseball’s just a fun thing to be a part of for a bit. For some, it’s a repository for passion and camaraderie. For a handful, it’s a container of history. And for a very select few, it’s a way to make an obscene amount of money. We are none of these people. We are the embracers of the outs. The out is what we believe in. It is what we celebrate. So we exist outside those systems… But also through them. What we believe is less of a philosophy and more of a state of action. An unfolding. We call it:] A visual of the word KLARINES appears behind them. (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''HOST'' We don’t pronounce this word. We use it as a signal, as a point of contemplation, to consider the necessity of failure. The necessity of the out. I now invite you to do this yourself. To bring this contemplation to your interactions with others, in the world, who may have a more solid notion of what that word means — and what baseball means. You won’t be alone in this. We will be doing this together. Everything you need for your task will be in your phone. And will be revealed to you in due time. Thank you. You are now out.] The Host beckons you out of the Club, scanning each of your phones along the way. [[Return to the gift shop.|GiftShopEntrance]] (set: $KnightedInitiationFeed to true) (display: "CommonCode")You're greeted by a Host, who scans your phone. (if: $diehardFanInfo is true)[ (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''HOST'' Greetings. A question for you: do you believe fandom is about wanting to win?] [[Yes.|ClubInitiationDiehardTruth]] [[No.|ClubInitiationDiehardLie]] ] (else:)[ (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''HOST'' Thank you for coming. Follow me.] The Host guides you to a sectioned-off portion of the seating area, where other participants are gathering alongside you. After a few minutes, the Host stands in front of the collected group, stock-still, holding a baseball in their hand. [[The group grows silent and attentive.|ClubInitiationPerformance]] ] (display: "CommonCode")This is Club Knighted: an intimate bar space. Upscale-feeling, sharply contrasting with the stadium energy. The vibe is sorta like this: <a href="https://ibb.co/zH2VtNnt"><img src="https://i.ibb.co/7Npt0bY0/Club-Inside-Main.png" alt="Club-Inside-Main" border="0"></a> (if: $BartenderDone is true)[ ](else:)[ The Bartender beckons you over. [[Belly up.|ClubBar]] ][[Take a velvety seat in the main area. //(TO BE WRITTEN)//|ClubRegularSeating]] [[Go back into the Gift Shop.|GiftShopEntrance]] (display: "CommonCode")//TO BE WRITTEN// [[Return.|ClubInsideMain]] (display: "CommonCode")(set: $previousPassage to $currentPassage) (set: $currentPassage to (passage:)'s name) (set: $clickCount to it + 1) (if: $clickCount is 10)[(go-to: "EndTopOfInning1")] (append: ?SideBar)[ <div style=" border: 1px solid #ccc; padding: 10px; margin: 5px 0; background-color: transparent; color: white; font-size: 10px; line-height: 1.4; border-radius: 5px; width: 100%; box-sizing: border-box; word-wrap: break-word;"> 🏟️ <strong>SCORE:</strong> Home $homeTeamScore - Away $awayTeamScore <br> ⚾ <strong>INNING:</strong> (if: $inningcount % 2 is 1)[ Top of (print: (floor: ($inningcount + 1) / 2)) ](else:)[ Bottom of (print: (floor: $inningcount / 2)) ]<br> 📱 <span style="color: #428bca;"> [[Open Phone App|AppCheck]] </span> </div> ](if: $homeTeamScore is $awayTeamScore)[The concessions stand is selling "Knotted Up" garlic knots. (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''CONCESSIONS WORKER'' A tie game means our special Knotted Up garlic knots! Individually wrapped for extra drama! Want a few?] [[Go for it.|BuyKnottedUp]] [[Leave.|ExploreMainBranch]] ] \ (else-if: $homeTeamScore - $awayTeamScore >= 3)[The concessions stand is selling "Rout Dogs" hot dogs. (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''CONCESSIONS WORKER'' Rout Dogs, hot and fresh for when the home team's way ahead! Want one?] [[Mmm.|BuyRoutDog]] [[Leave.|ExploreMainBranch]] ] \ (else-if: $awayTeamScore - $homeTeamScore >= 3)[The concessions stand is selling "Gettin' Creamed" ice cream. (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''CONCESSIONS WORKER'' Sure, we're way down, but with a scoop of Gettin' Creamed ice cream in your hand, you'll barely care to remember! How 'bout it?] [[Yes, please.|BuyIceCream]] [[Leave.|ExploreMainBranch]] ] \ (else-if: $awayTeamScore - $homeTeamScore <= 2 and $awayTeamScore - $homeTeamScore > 0)[The concessions stand is selling "It's Close" cotton candy. (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''CONCESSIONS WORKER'' Cotton candy clouds, for a close game with a foggy outcome!] [[I want that sugar cloud.|BuyCottonCandy]] [[Leave.|ExploreMainBranch]] ] \ (else-if: $homeTeamScore - $awayTeamScore <= 2 and $homeTeamScore - $awayTeamScore > 0)[The concessions stand is selling "It's Close" cotton candy. (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''CONCESSIONS WORKER'' Cotton candy clouds, for a close game with a foggy outcome!] [[I want that sugar cloud.|BuyCottonCandy]] [[Leave.|ExploreMainBranch]] ] \ (if: $diehardMeeting is true and $diehardQuestComplete is not true)[You also notice a gold and red door nearby. On one side is a digital screen, which with a scanner attached to one side of it. [[Scan your phone and enter.|DiehardEnclaveStart]]] (display: "CommonCode")You're in the main concourse: there are concessions, a gift shop, a games area, and some bathrooms. Looks like the game's about to start, though... [[Check out a concessions stand.|PreGameConcessions]] [[Go to the gift shop.|PreGameGiftShop]] [[See what's happening in the games area.|PreGameKlarinesGames]] [[Run to the bathroom.|PreGameBathroom]] [[Head to your seat for the pregame events.|GoToPreGameStart]](align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''DIEHARD FAN 1'' Well, that's out number one. Let's put it on your scorecards.] The Diehard Fan instructs you and the group on how to score the first out of the inning, using the diamond traced on the cardboard signs and the Sharpie in your hands. If the out, for example, was a groundball to shortstop, you'd be instructed to write this: <a href="https://tinypic.host/image/Screenshot-2024-11-16-at-1.58.08%E2%80%AFPM.2lIBm5"><img src="https://tinypic.host/images/2024/11/16/Screenshot-2024-11-16-at-1.58.08PM.png" alt="Screenshot 2024 11 16 at 1.58.08 PM" border="0"></a> [[Continue.|DiehardEnclavePart2]] (display: "CommonCode") (if: $promisingRookieStoryline is 1)[(set: $diehardGameEventList to it + ("USC's promising rookie pitcher is doing well, "))] (if: $promisingRookieStoryline is 2)[(set: $diehardGameEventList to it + ("USC's promising rookie pitcher is struggling a bit, "))] (if: $homeHitterStoryline is 1)[(set: $diehardGameEventList to it + ("USC's flashy up-and-coming position player star helped the team score, "))] (if: $homeHitterStoryline is 2)[(set: $diehardGameEventList to it + ("USC's veteran clubhouse leader helped the team score, "))] (if: $homeHitterStoryline is 3)[(set: $diehardGameEventList to it + ("USC's flashy up-and-coming position player star is struggling a bit, "))] (if: $homeHitterStoryline is 4)[(set: $diehardGameEventList to it + ("USC's veteran clubhouse leader is struggling a bit, "))] (if: $craftyVeteranStoryline is 1)[(set: $diehardGameEventList to it + ("The visiting team's crafty veteran pitcher is doing well, "))] (if: $craftyVeteranStoryline is 2)[(set: $diehardGameEventList to it + ("The visiting team's crafty veteran pitcher is struggling a bit, "))] (if: $visitingHitterStoryline is 1)[(set: $diehardGameEventList to it + ("The visiting team's scrappy, overachieving position player helped them score, "))] (if: $visitingHitterStoryline is 2)[(set: $diehardGameEventList to it + ("The visiting team's star player — who used to be on USC — is helped their team score, "))] (if: $visitingHitterStoryline is 3)[(set: $diehardGameEventList to it + ("The visiting team's scrappy, overachieving position player is struggling a bit, "))] (if: $visitingHitterStoryline is 4)[(set: $diehardGameEventList to it + ("The visiting team's star player — who used to be on USC — is struggling a bit, "))]The Diehard Fan reflects on the result of this one pitch. (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''DIEHARD FAN 1'' Ball one kills me. I'd rather see the other guys hit a home run on the first pitch. I'm being honest. It's what everyone tells you about first impressions, right? If you give a bad one, it's always uphill from there? I've been told I'm gruff sometimes. Not very personable. I guess I throw ball one a lot in my conversations. Maybe that's why it kills me to watch it. Because I feel like our pitchers, our guys, are //me//. I can't quite separate it. I've watched them my whole life, you know? It's one of my longest relationships. Can you blame me?] [[The first out of the inning is recorded.|DieHardEnclaveOut1]]The Diehard Fan reflects on the result of this one pitch. (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''DIEHARD FAN 1'' Ugh. Well. That's not what you want. And it hurts. And the hard part is figuring out why it happened, you know? Was it the location of the pitch? Was it because it was a fastball or a slider instead of a curveball or a changeup? Was it the other team's guy with a good piece of hitting? And the beautiful and maddening part of it all is that there's no real answer. The way I answer in this moment is usually more about me than what happened on the field. And that's the whole damn point of being a fan, isn't it? I am my team. My team is me.] [[The first out of the inning is recorded.|DieHardEnclaveOut1]]The Diehard Fan reflects on the result of this one pitch. (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''DIEHARD FAN 1'' That's a quick out. See, the game now is all about strikeouts, but strikeouts mean more pitches, and more pitches means more wear on an arm, and it's only a matter of time until that thing's gonna blow. Throwing a baseball at 95 miles an hour is unnatural. Our shoulder ligaments didn't evolve to sustain that level of stress over and over again. I say we've gotta get away from flashy strikeouts and get back to efficiency. There was a pitcher named Greg Maddux who was known for getting quick outs, and there's a stat named for him called the Maddux: going nine innings, giving up no runs, throwing less than 100 pitches. That's the ideal. I wish I had thought that way about my own career, you know? I thought more work meant good work. I missed out on some important stuff because of that belief. But seeing a one-pitch out...seeing our guy doing something different than I did...it gives me joy, you know? Maybe even a little comfort.] [[Continue.|DieHardEnclaveOut1]]The Diehard Fan reflects on the result of this one pitch. (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''DIEHARD FAN 1'' Strike one. A beautiful thing. For me, it's about momentum. One good thing builds on another. And I know a lot of professional athletes say momentum is bunk, that every moment is a new one, but athletes are human beings. And the athletes on our team are //my// human beings. And when you feel good about something, or bad about something, you can't just shut that feeling off. That's why I love Strike One so much. It gets the good vibes going — for them, and for me.] [[The first out of the inning is recorded.|DieHardEnclaveOut1]]A tab named "Diehards" is opened on your app. It contains a QR code and a single message: (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[//WE'RE THROUGH A GOLD AND RED DOOR NEAR THE MAIN CONCESSION STAND. USE THIS CODE.//] [[Return.|AppCheck]] (set: $diehardMeeting to true) (display: "appCommonCode")This inspires Diehard 4 to share a memory from a different game...which hands off to the next Diehard in the space...creating a chain of memories and associations, spinning around and around. This happens until the second out of the inning is recorded. The Diehard in your group then turns back to your cluster. (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''DIEHARD FAN 1'' Well, that's out number two. Let's put it on your scorecards.] The Diehard then turns on a light above you — a UV light — which reveals trace marks on your signs that weren't there before. (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''DIEHARD FAN 1'' This is a little system us diehard fans have devised.] The Diehard hands out colored Sharpies to everyone. (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''DIEHARD FAN 1'' The areas around the diamond...those are //our// areas. It's our way of saying we belong to this team as much as the team belongs to us. Where you see lines in the space around the diamonds, fill them in. Where you don't see lines...make your own. Draw or write the things you care about most in the world.] You do this, along with the others in the group. When you're done, your sign might look something like this: <img src="https://tinypic.host/images/2024/11/24/Screenshot-2024-11-23-at-3.36.39PM.png" alt="Screenshot 2024 11 23 at 3.36.39 PM" border="0"> [[The third out of the inning is recorded.|DiehardEnclavePart3]] (display: "CommonCode")On your seat is a small cardboard sign, as well as a black Sharpie. A thin diamond shape is traced on the sign. The person in the La-Z-Boy — a Diehard Fan — greets you with a silent nod. As others fill the seats next to you, they do the same. //NOTE: this Diehard experience is timed to start at the beginning of each half-inning. For the purposes of this script, however, the "clock" of moving through the innings will remain unaltered.// When the action of the half-inning is about to begin, the Diehard Fan speaks for the first time to the group. (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''DIEHARD FAN 1'' I got a feeling something important's gonna happen this inning. Although, gotta be honest with you, I get that feeling //every// inning. And what's more, I'm right every time. Watch.] The attention of your group is turned to an old-school TV monitor in front of the La-Z-Boy, which is playing a feed of the game. The first pitch of the half-inning is thrown. One of the following things happens (for the sake of example, we'll assume the Home Team is in the field): [[The Home Team pitcher throws a ball.|DieHardEnclavePart1Ball]] [[The Home Team pitcher throws a strike.|DieHardEnclavePart1Strike]] [[The Away Team hitter makes an out.|DieHardEnclavePart1Out]] [[The Away Team hitter gets a hit.|DieHardEnclavePart1Hit]] (set: $diehardGameEventList to "") (display: "CommonCode")As the inning continues, the Diehards across the room start speaking to each other — using microphones that are connected to speakers spread throughout the room, so that everyone present can hear the whole conversation. The first line is in response to how the first out of the inning is recorded: (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''DIEHARD FAN 1'' That first out brings up a lot of memories, y'all, doesn’t it?] Another Diehard Fan responds to this with an anecdote from the history of the Home Team — which is gathered through generative AI and delivered to them via earpiece. (link: "Load an example, with USC as the Home Team.")[ //AI-generated script will load momentarily...// <p id="gpt" style="white-space:pre-line;"></p> <script> const prompt = `Describe an important moment in the history of USC baseball (from the past 50 years) that involves a groundout to the shortstop. Do this in the voice of an old-timer expert and devoted USC fanatic. Use specific names of players, opposing teams, stadiums, stakes of the game mentioned, and so on — as well as what the result of that play meant for the USC team that season. The response should be no longer than five lines, and end with an expression of how that moment related to a personal relationship with their child at that moment. It should be written in a way that is more fragmented and stream-of-consciousness than polished sentences (using "You know"s, "I think"s, and pauses via ellipses), and should also reflect the speaker's efforts to pull from their massive amount of knowledge about USC baseball. Please output the format with "DIEHARD FAN 2" in bold, then a line break, and then the generated text.`; console.log(prompt); (async () => { const response = await fetch('https://api.anthropic.com/v1/messages', { method: 'POST', headers: new Headers({ 'x-api-key': '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', 'anthropic-version': '2023-06-01', 'anthropic-dangerous-direct-browser-access': 'true', 'Content-Type': 'application/json' }), body: JSON.stringify({ model: "claude-sonnet-4-20250514", max_tokens: 1024, messages: [{"role": "user", "content": prompt}] }) }); const json = await response.json(); console.log(json); const passage = document.getElementsByTagName("p")[0]; passage.textContent = json.content[0].text; })(); </script> [[Continue.|DiehardEnclavePart2Contd]] ]Another Diehard Fan chimes in next. They go off what the previous Fan said, but this time incorporating thoughts about how some of the central players in this game are doing. (link: "Load an example.")[ //AI-generated script will load momentarily...// <p id="gpt" style="white-space:pre-line;"></p> <script> const prompt = `Describe a game from the history of USC baseball that involved player(s) that match the archetypes and quality of performances (as well as which team they're on) that you see at the end of this prompt. (Note that commas are used to separate different players.) These archetypes/qualities of performance are drawn from a game the speaker is watching right now; have the speaker relate the game being described to this current game, using language from the end of this prompt. Do this in the voice of an old-timer expert and devoted USC fanatic. Also make sure to include the stakes of the game and its result. The outputted text should be in response to something someone else said about their child; the speaker of the outputtext text should start their response with a reference to their own child (using specific reflective language like "I was with my kid too"), and that they were with them when watching this specific game. The text should be no longer than four lines. It should be written as one run-on sentence, in which more and more details enter the speaker's mind as they go, and should have a folksy and unpolished tone. Please output the format with "DIEHARD FAN 3" in bold, then a line break, and then the generated text. ${harloweVariables.$diehardGameEventList}`; console.log(prompt); (async () => { const response = await fetch('https://api.anthropic.com/v1/messages', { method: 'POST', headers: new Headers({ 'x-api-key': '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', 'anthropic-version': '2023-06-01', 'anthropic-dangerous-direct-browser-access': 'true', 'Content-Type': 'application/json' }), body: JSON.stringify({ model: "claude-sonnet-4-20250514", max_tokens: 1024, messages: [{"role": "user", "content": prompt}] }) }); const json = await response.json(); console.log(json); const passage = document.getElementsByTagName("p")[0]; passage.textContent = json.content[0].text; })(); </script> [[Continue.|DiehardEnclaveOut2]] ](align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''DIEHARD FAN 1'' Out number three. Time for you all to go. But before you do...] The Diehard beckons you all up, and to come closer to them. (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''DIEHARD FAN 1'' Those signs you've made...they've made you one of us now. Hold them up in the stands, and those who have been been to this room will see you and know you and recognize you. That sign is proof that this team and your life are entwined...which we have a special word for. That word is Klarines. Nobody except us needs to really know that, though, okay? Just hold your sign up for yourself, and for each other. You will need them for something very special soon.] And with this, you are guided out of the Diehard's room. [[Return to the concourse.|ExploreMainBranch]] (set: $diehardSign to true) (display: "CommonCode")You're suddenly in a warm, cozy space: wall-to-wall carpeting, heavy wood furniture scattered about, antique knick-knacks on shelves. It's a massive contrast with the stadium aesthetic. As you enter, your phone vibrates with an alert: ''YOU ARE IN SEAT #8.'' In front of you are a scattering of elderly folk reclining in La-Z-Boys; in front of each of them are five padded seats. There are numbers on the back of each of these seats. [[Find and take your seat.|DiehardEnclavePart1]] [[Return to the concourse.|ExploreMainBranch]] (display: "CommonCode") (set: $diehardQuestComplete to true)(align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''KLARINES WORKER 2'' Oh man. Thought you were different for a sec there.] They turn away from you. [[Return.|FunZoneEntrance]] (set: $klarinesBurnoutsBlah to true) (display: "CommonCode")A full-screen message appears on your Home Game app, with one or several button-press choices below it: ''The Announcers are observing and commenting, as Announcers do, and they see you may have a choice to make.'' (set: _anyConditionTrue to false) (if: $diehardSign is true)[ (set: _anyConditionTrue to true) [[[I choose to be a Diehard fan.|End5thAppCheckDiehardChoice]]] ] (if: $newGameAppPlaying is true)[ (set: _anyConditionTrue to true) [[[I choose to be a player of the New Game.|End5thAppCheckNewGameChoice]]] ] (if: $KnightedInitiationFeed is true)[ (set: _anyConditionTrue to true) [[[I choose to be a Club Knighted devotee.|End5thAppCheckClubKnightedChoice]]] ] (if: $awayTeamTraining is true)[ (set: _anyConditionTrue to true) [[[I choose to be a part of the Away Team Rebellion.|End5thAppCheckRebellionChoice]]] ] (if: $hackersInitiated is true)[ (set: _anyConditionTrue to true) [[[I choose to be a Hacker.|End5thAppCheckHackerChoice]]] ] (if: not _anyConditionTrue)[ [[[I do?|End5thAppCheckNoChoice]]] ]//TO BE WRITTEN// (link: "Return to what you were doing.")[(go-to: $currentPassage)] (set: $clubKnightedMission to true)//TO BE WRITTEN: a hidden number on the back of your Diehard sign is pointed out; you're encouraged to find the fans with the signs that have the numbers before and after yours, by talking to others you see carrying signs around…if you take a photo of your connected signs together, it causes them to appear on a screen outside the Diehard Area.// (link: "Return to what you were doing.")[(go-to: $currentPassage)] (set: $diehardMission to true)//TO BE WRITTEN: you are “paired” with a random person in the ballpark you can message (in a drop-down menu sorta way, maybe AI-mediated like in the video game Retail Mage) and ask them for something they’d want to say/show to thousands of people…maybe they can choose from Walk, Home Run, Double, Error, etc…you do it as well! Whenever a certain event happens in the game, the Official Scoring System in the app and on the digital scoreboard is overridden with the thing that person contributed.]// (link: "Return to what you were doing.")[(go-to: $currentPassage)] (set: $hackerMission to true)//TO BE WRITTEN: the New Game interface comes to life on your Home Game app. You are randomly selected in one of the following half-innings, where you must choose a task to try and accomplish before the on-field hitter's at-bat is complete.// (link: "Return to what you were doing.")[(go-to: $currentPassage)] (set: $newGameMission to true)Another full-screen message that reads: ''Not you. You are truly singular: without allegiance. The Announcers are impressed.'' (link: "Return to what you were doing.")[(go-to: $currentPassage)]//TO BE WRITTEN: you are directed to various dark corners of the stadium that have projected blankness. As a member of the Away Team Rebellion, you can use your smartphone flashlight + AR to “reveal” pro-Away Team messages…maybe the more members find them/”reveal” them, the more a projected version of the message becomes visible to everyone? FOR CODING WITHIN THIS SCRIPT: As each half-inning progresses, each message evolves (as more and more people have been shining on them?)// (link: "Return to what you were doing.")[(go-to: $currentPassage)] (set: $rebellionMission to true)(align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''PA ANNOUNCER'' Attention, fans: Please kindly direct your attention to your innermost being. By that, I mean: your phones. You will be receiving a special message from our team of announcers here at Klarines field. Don't worry, it's not about your car being towed. Thank you.] [[Check your app.|End5thAppCheck]](align:"=><=")+(box:"X=")[(text-style:"underline")[''INNING UPDATE'']] The (if: $inningcount is 1)[(print: "top of the 1st inning ends.") ](else-if: $inningcount is 2)[(print: "bottom of the 1st inning ends.") ](else-if: $inningcount is 3)[(print: "top of the 2nd inning ends.") ](else-if: $inningcount is 4)[(print: "bottom of the 2nd inning ends.") ](else-if: $inningcount is 5)[(print: "top of the 3rd inning ends.") ](else-if: $inningcount is 6)[(print: "bottom of the 3rd inning ends.") ](else-if: $inningcount is 7)[(print: "top of the 4th inning ends.") ](else-if: $inningcount is 8)[(print: "bottom of the 4th inning ends.") ](else-if: $inningcount is 9)[(print: "top of the 5th inning ends.") ](else-if: $inningcount is 10)[(print: "bottom of the 5th inning ends.") ](else-if: $inningcount is 11)[(print: "top of the 6th inning ends.") ](else-if: $inningcount is 12)[(print: "bottom of the 6th inning ends.") ](else-if: $inningcount is 13)[(print: "top of the 7th inning ends.") ](else-if: $inningcount is 14)[(print: "bottom of the 7th inning ends.") ](else-if: $inningcount is 15)[(print: "top of the 8th inning ends.") ](else-if: $inningcount is 16)[(go-to: "Endgame") ](else-if: $inningcount is 17)[(print: "top of the 9th inning ends.") ](else-if: $inningcount is 18)[(print: "bottom of the 9th inning ends.") ](else:)[(print: "UNSPECIFIED INNING ends.")] [[Continue.|ScoreMiddleOfInning1]] (set: $roll to (random:1, 100)) (set:$roll2 to (random:1, 100)) (set:$clickCount to 0)The bottom of the 8th inning ends. In the 9th inning, the various storylines fans have participated in converge. (link: "Where does my story go?")[ (if: $diehardMission is true)[(go-to: "EndgameDiehartPt1")] (else-if: $hackerMission is true)[(go-to: "EndgameHackerPt1")] (else-if: $clubKnightedMission is true)[(go-to: "EndgameKnightedPt1")] (else-if: $rebellionMission is true)[(go-to: "EndgameRebellionPt1")] (else-if: $newGameMission is true)[(go-to: "EndgameNewGamePt1")] (else:)[(go-to: "EndgameNoMissionPt1")] ]//TO BE WRITTEN: you’re assigned a player on the Home Team and, if you move your phone as that player moves, you can take a photo of your sign to contribute to the mosaic. The digital versions of these signs appear outside the Diehard Area.// (link: "The ninth inning ends.")[ (if: $awayTeamScore is $homeTeamScore)[ (go-to: "EndgameExtraInnings") ](else:)[ (go-to: "EndgameLeaveStadium") ] ]You leave the stadium. Time to go home. The final score of the game was: Home Team $homeTeamScore, Away Team $awayTeamScore. (link: "Restart?")[(reload:)]The game goes into extra innings. At this point, all the "gated" areas in the ballpark that require certain experience paths (the Knighted Club, Diehard Fan Room, Klarines Suite, etc.) are opened up for you to explore as you wish. There are no set threads for extra innings, and no set performance moments...but they give you the opportunity to see the spaces you may have missed, and imagine the possibilities. [[The game ends.|EndgameLeaveStadium]] (set: $homeTeamScore to it + 1)//TO BE WRITTEN: an option, if you both say YES to it, to meet with the person you've been paired with to cheer together? A photo of this is displayed somewhere? (Another fallback mechanism TBD, too)// (link: "The ninth inning ends.")[ (if: $awayTeamScore is $homeTeamScore)[ (go-to: "EndgameExtraInnings") ](else:)[ (go-to: "EndgameLeaveStadium") ] ]//TO BE WRITTEN// (link: "The ninth inning ends.")[ (if: $awayTeamScore is $homeTeamScore)[ (go-to: "EndgameExtraInnings") ](else:)[ (go-to: "EndgameLeaveStadium") ] ]You walk through the concourse and towards the exit. [[Check out a screen by the main Concessions stand.|EndgameLeaveStadiumDiehardSigns]] [[Leave the stadium.|EndgameEnd]]On a digital screen, you see a mosaic of scorecard-like signs: digital snapshots of signs you've seen people carrying around the stadium. The full picture looks like this: <a href="https://tinypic.host/image/Untitled-design-1.2MoOD4"><img src="https://tinypic.host/images/2024/12/02/Untitled-design-1.md.png" alt="Untitled design 1" border="0"></a> [[Leave the stadium.|EndgameEnd]]//TO BE WRITTEN: The final part of the New Game is related to cheering? Everyone in the New Game starts playing at the same time, with a new rule…a sound meter that pushes forward into single/double/triple/home run, based on how loud it gets? New Game players are called upon to get everyone to cheer for pretty much everything?// (link: "The ninth inning ends.")[ (if: $awayTeamScore is $homeTeamScore)[ (go-to: "EndgameExtraInnings") ](else:)[ (go-to: "EndgameLeaveStadium") ] ]You didn't align with any of the groups within this experience, leaving you free to root for whatever you want at the end of this game. It's apparent that people around you are cheering for a variety of things...some of which are one of the teams, but many you're not fully sure of. What you know is that everyone's cheering together...and those cheers build on each other, and mutually energize each other, up through the very last pitch. (link: "The ninth inning ends.")[ (if: $awayTeamScore is $homeTeamScore)[ (go-to: "EndgameExtraInnings") ](else:)[ (go-to: "EndgameLeaveStadium") ] ]//TO BE WRITTEN: you're asked to move your phone in synchronicity with an Away Team player during the last inning. If you succeed, peoples’ apps around you transform to Away Team-themed? With a message about rebellion, and that Away Team fans in the stadium also have a right to their fandom, etc?// (link: "The ninth inning ends.")[ (if: $awayTeamScore is $homeTeamScore)[ (go-to: "EndgameExtraInnings") ](else:)[ (go-to: "EndgameLeaveStadium") ] ]Where will you go in the concourse? [[To the Gift Shop.|GiftShopEntrance]] [[To the Fun Zone recreation area.|FunZoneEntrance]] [[To a concessions stand.|ConcessionsStandEntrance]] [[To an elevator going up to the suite level.|SuitesElevatorEntrance]] [[To the bathroom.|BathroomEntrance]] [[To where you entered the stadium.|StadiumEntrance]] [[Return to your seat.|InSeats]] (display: "CommonCode")//TO BE WRITTEN// [[Return.|FigurinesZoneNo1]]//TO BE WRITTEN// [[Return.|FigurinesZoneNo2]]//TO BE WRITTEN// [[Return.|FigurinesZoneNo3]]This area is filled to the brim with miniature bobblehead-like figurines. They line the shelves of the space, and also fill various bins scattered around. Against one wall are a series of scanners, with screens that all read SCAN TO HEAR YOUR FIGURINE'S STORY. [[Pick up //Figurine 1//.|FigurinesZoneNo1]] [[Pick up //Figurine 2//.|FigurinesZoneNo2]] [[Pick up //Figurine 3//.|FigurinesZoneNo3]] [[Return.|GiftShopEntrance]] (display: "CommonCode")//Description of Figurine 1.// [[Put this figurine back.|FigurinesZoneEntrance]] [[Scan this figurine at the neaby kiosk.|FigurinesScanNo1]] [[Go to checkout to buy this figurine.|CheckoutBuyFigurine1]] (display: "CommonCode")//Description of Figurine 2.// [[Put this figurine back.|FigurinesZoneEntrance]] [[Scan this figurine at the neaby kiosk.|FigurinesScanNo2]] [[Go to checkout to buy this figurine.|CheckoutBuyFigurine2]] (display: "CommonCode")//Description of Figurine 3.// [[Put this figurine back.|FigurinesZoneEntrance]] [[Scan this figurine at the neaby kiosk.|FigurinesScanNo3]] [[Go to checkout to buy this figurine.|CheckoutBuyFigurine3]] (display: "CommonCode")(if: $inningcount <= 10 and $celebrationMove is false)[ You notice that, whenever a Home Team player makes a good play, they do a celebration where they press their elbows together. (set: $celebrationMove to true) ] (else:)[$watchingGame] [[Back.|WatchGameInSeats]] (display: "CommonCode") (set: $watchingGameCounter to it + 1)The Klarines Recreation area is a self-described "Family-Friendly Fun Zone!" [[Check out the performance stage.|KlarinesStageEntrance]] [[Go to the playground area.|FunZonePlaygroundEntrance]] [[Say hey to the Home Team mascot.|FunZoneMascotEntrance]] [[Go over to some bored-looking Klarines employees.|KlarinesEmployeesStart]] [[Return to the concourse.|ExploreMainBranch]] (display: "CommonCode")You are met with Smartie themself, face-to-face: <a href="https://ibb.co/hRtSC5DK"><img src="https://i.ibb.co/GvbqFwcV/Chat-GPT-Image-Dec-2-2025-03-39-06-PM.png" alt="Chat-GPT-Image-Dec-2-2025-03-39-06-PM" border="0"></a> [[Take a photo with this thing.|FunZoneMascotPhoto]] [[Return.|FunZoneEntrance]] (display: "CommonCode")After the photo's been snapped, the Mascot opens up the baseball in its hands and reveals its insides to you: a surface with a QR code on it. [[Scan the QR code with your phone.|FunZoneMascotQRCode]] [[Return.|FunZoneEntrance]] (display: "CommonCode") (set: $photoWithHomeGameMascot to true)You scan it, which activates an alert on your Home Game app: ''Welcome Home. Your Path To True Fandom is Only A Few Taps Away.'' [[Return to the greater Fun Zone area.|FunZoneEntrance]] (display: "CommonCode") (set: $diehardFanInfo to true)It's a slide-centric playground structure inspired by network pathways, in this sort of style: <a href="https://tinypic.host/image/05a9b816-c4f5-4443-bd34-645b9a4ca430.2Xj5g4"><img src="https://tinypic.host/images/2024/12/07/05a9b816-c4f5-4443-bd34-645b9a4ca430.md.webp" alt="05a9b816 c4f5 4443 bd34 645b9a4ca430" border="0"></a> [[Go down the slide.|FunZonePlaygroundGoDownSlide]] [[Return.|FunZoneEntrance]] (display: "CommonCode")After you whoosh your way down and get out, you notice scrawlings and scratched-out words on the undersides of the slides. All of them spell the same two phrases: ''INNOVATION IS AN ILLUSION.'' ''FIND US IN THE BACK OF THE GIFT SHOP.'' [[Return.|FunZoneEntrance]] (display: "CommonCode") (set: $wentDownPlaygroundSlide to true)You enter the Gift Shop. It's laid out like this: <a href="https://ibb.co/Zp1y2VTF"><img src="https://i.ibb.co/NdnwTsYJ/7712647e-6c19-4c73-acb5-67ee19362483-1767x1366.png" alt="7712647e-6c19-4c73-acb5-67ee19362483-1767x1366" border="0"></a> [[Check out the Gift Shop Area.|GiftShopMerchEntrance]] [[See what's up with that Secret Club Entrance.|KnightedClubEntrance]] [[Go to the Halls of History.|HallsOfHistoryEntrance]] [[Take a peek at the Memorabilia Exhibition.|MemorabiliaAreaEntrance]] [[Saunter up to the Micro-Cinema area.|MicroCinemaEntrance]] [[Wander into the Figurines Zone. //(TO BE WRITTEN)//|FigurinesZoneEntrance]] [[Go to the Checkout Area. //(TO BE WRITTEN)//|CheckoutAreaEntrance]] [[Return to the concourse.|ExploreMainBranch]] (display: "CommonCode")On the inside lining/surface of each Away Team item is a QR code, beside a printed message: ''WE'RE HERE TOO'' [[Scan the QR code.|GiftShopMerchAwayTeamQR]] [[Return.|GiftShopMerchEntrance]] (display: "CommonCode") (set: $pickUpAwayTeamMerch to true)You get an alert on your phone: ''CHECK YOUR HOME GAME APP. WE RISE.'' [[Return.|GiftShopMerchEntrance]] (set: $rebellionApp to true) (display: "CommonCode")//TO BE WRITTEN// [[Return.|GiftShopMerchEntrance]]In this main Gift Shop area, you're surrounded by merchandise — on shelves and clothing racks. [[Examine a rack of eclectically-colored tee shirts.|GiftShopMerchTeeShirts]] [[Go to a circular shelf encased in plastic.|GiftShopMerchRotatingShelf]] [[Browse around the other shelves.|GiftShopMerchGeneral]] [[Check out a stand with patchwork-y baseball caps on it. //(TO BE WRITTEN)//|GiftShopMerchCaps]] [[Look at an array of jerseys displayed on a shelving unit. //(TO BE WRITTEN)//|GiftShopMerchJerseys]] [[Return to the entrance.|GiftShopEntrance]] (display: "CommonCode")You see the expected variety of Home Team merch...but every so often, sprinkled in, is a piece of Away Team apparel or memorabilia. [[Pick up an Away Team piece.|GiftShopMerchAwayTeam]] [[Return.|GiftShopMerchEntrance]] (display: "CommonCode")//TO BE WRITTEN// [[Return.|GiftShopMerchEntrance]]This shelving unit has a retractable plastic case around it — which is partially open, allowing you to handle the merch in one vertical section of the rotating unit. On either sides, behind the plastic casing, you can see merch that you are currently not able to handle. It could look something like this, with signage that instead reads ''IMPERMANENT KEEPSAKES'': <a href="https://tinypic.host/image/01fff5e5-dccf-4f4e-97ed-4286fc898beb.2MrWju"><img src="https://tinypic.host/images/2024/12/01/01fff5e5-dccf-4f4e-97ed-4286fc898beb.md.webp" alt="01fff5e5 dccf 4f4e 97ed 4286fc898beb" border="0"></a> (if: $homeTeamScore is $awayTeamScore)[ Right now, this shelf displays things that reflect it being a tie game. ](else-if: $homeTeamScore >= $awayTeamScore + 3)[ Right now, this shelf displays things that reflect the Home Team being way ahead. ](else-if: $awayTeamScore >= $homeTeamScore + 3)[ Right now, this shelf displays things that reflect the Away Team being way ahead. ](else-if: $awayTeamScore > $homeTeamScore)[ Right now, this shelf displays things that reflect it being a close game, with the Away Team ahead. ](else:)[ Right now, this shelf displays things that reflect it being a close game, with the Home Team ahead. ] [[Return.|GiftShopMerchEntrance]] (display: "CommonCode") (set: $merchRotatingShelfSeen to true)Around the rack is a circular sign with the below text, whose ending-point color gradation connects directly to its starting-point: <a href="https://ibb.co/1JpJg7yR"><img src="https://i.ibb.co/jZxZNb03/69f278bb-6c09-4519-8912-a1b2d78f43b8-643x52.jpg" alt="69f278bb-6c09-4519-8912-a1b2d78f43b8-643x52" border="0"></a> There are also colored hangers on this rack, which correspond to each of the colored word-pairs on the signage. [[Pull out a black hanger.|GiftShopMerchTeeShirtsBlack]] [[Pull out a gray hanger.|GiftShopMerchTeeShirtsGray]] [[Pull out a pink hanger.|GiftShopMerchTeeShirtsPink]] [[Pull out a mustard yellow hanger.|GiftShopMerchTeeShirtsMustardYellow]] [[Pull out a light blue hanger.|GiftShopMerchTeeShirtsLightBlue]] [[Return to Gift Shop entrance.|GiftShopMerchEntrance]] (display: "CommonCode")This tee shirt has a 90s retro-tech look that's over-the-top...something like this: <a href="https://ibb.co/nqt4nm2p"><img src="https://i.ibb.co/p65NRwDq/Chat-GPT-Image-Dec-3-2025-10-31-56-AM.png" alt="Chat-GPT-Image-Dec-3-2025-10-31-56-AM" border="0"></a> [[Look closer at the clothing tag.|GiftShopMerchTeeShirtsBlackTag]] [[Return.|GiftShopMerchTeeShirts]] (display: "CommonCode") (set: $retroTechTeeSeen to true)The tag, underneath the KLARINES logo, has small text that reads: ''THIS IS DEEPLY DISCOUNTED BECAUSE THIS IS NOT WHAT KLARINES IS ANYMORE. THIS KLARINES IS LONG GONE. YOU CAN WEAR THIS AS A PIECE OF NOSTALGIA, AN IRONIC WINK TO SOMETHING THAT SHALL NEVER EXIST AGAIN, BUT WE DO NOT VALUE THIS SHIRT THAT WAY. WE DO NOT VALUE THIS AT ALL. WE CANNOT WE CANNOT WE CANNOT BE TIED DOWN TO WHAT WE ONCE WERE. WE CANNOT EVEN BE TIED DOWN TO WHAT WE ARE RIGHT NOW. THAT IS NOT WHAT KLARINES IS. WHAT KLARINES IS.'' [[Return.|GiftShopMerchTeeShirts]] (display: "CommonCode")This tee shirt has "HOME GAME" in big lettering across it, as well as an image of the Home Team mascot on it. The shirt itself is pretty obviously counterfeit and cheaply made...something in the vein of this: <a href="https://ibb.co/1GD3gZkx"><img src="https://i.ibb.co/DfxNJ4Zn/Chat-GPT-Image-Dec-3-2025-10-49-16-AM.png" alt="Chat-GPT-Image-Dec-3-2025-10-49-16-AM" border="0"></a> [[Look at the clothing tag.|GiftShopMerchTeeShirtsGrayTag]] [[Return.|GiftShopMerchTeeShirts]] (display: "CommonCode") (set: $counterfeitTeeSeen to true)This clothing tag is part of a longer block of text that's printed/written on the inside & back portion of the shirt...with a QR code printed at the bottom. The text reads: ''THIS SHIRT IS NOT LICENSED. THIS SHIRT IS NOT FANDOM. THIS IS NOT EVEN A SHIRT. THIS IS A CALLING.'' ''WATCH THE HOME TEAM PLAYERS. OBSERVE THEIR CELEBRATION. REPORT IT TO THE PERSON BESIDE THE CURTAINS.'' ''WE HOPE YOU WILL BE A PART OF THIS.'' [[Return.|GiftShopMerchTeeShirts]] (display: "CommonCode")You get an alert on your phone: ''CHECK YOUR HOME GAME APP. THIS NEVER HAPPENED.'' [[Return.|GiftShopMerchTeeShirts]] (set: $hackersApp to true) (display: "CommonCode")This tee shirt has a psychedical patterning of baseball images on various-sized screens. Something in this world: <a href="https://ibb.co/0L66bkW"><img src="https://i.ibb.co/t6vvrSN/Chat-GPT-Image-Dec-3-2025-11-23-44-AM.png" alt="Chat-GPT-Image-Dec-3-2025-11-23-44-AM" border="0"></a> [[Look at the clothing tag.|GiftShopMerchTeeShirtsLightBlueTag]] [[Return.|GiftShopMerchTeeShirts]] (display: "CommonCode") (set: $psychedelicScreenTeeSeen to true)The tag reads: ''WHEN YOU CONSUME SPORTS, SPORTS CONSUMES YOU. REBEL REBEL. REBEL.'' There's a QR code beneath this text. [[Scan the QR code with your phone.|GiftShopMerchTeeShirtsHackersCode]] [[Return.|GiftShopMerchTeeShirts]] (display: "CommonCode")This shirt is black with white lettering that covers its entire front. It reads: ''ASK ME ABOUT THE LEGENDARY HOME TEAM PLAYER WHO’S GONE MISSING BUT MIGHT JUST HAVE DECIDED TO BLEND IN AMONGST THE FANS FOR AN UNDETERMINED AND INTRIGUING REASON I AM TRYING TO FIGURE OUT ALONGSIDE A GROUP OF AMATEUR INVESTIGATORS I JOINED IN THE BRIEF TIME I’VE BEEN AT THIS GAME WHICH IS MAKING ME WONDER HOW THIS IS GOING TO BE WORTH IT IN THE END WHICH IS A QUESTION I HAVE ABOUT MOST THINGS I DO ACTUALLY BUT IS BECOMING INCREASINGLY MORE ACUTE AND URGENT BECAUSE I HAVE DECIDED TO PUT THIS SHIRT ON WHICH REALLY SPELLS THE WHOLE THING OUT!'' [[Look at the clothing tag.|GiftShopMerchTeeShirtsMustardYellowTag]] [[Return.|GiftShopMerchTeeShirts]] (display: "CommonCode") (set: $whiteLetteringTeeSeen to true)You buy this shirt and put it on. //NOTE: the Missing Player storyline is in-process, and not included in this version of the script.// [[Return.|GiftShopMerchTeeShirts]] (set: $missingPlayerTeeShirtOn to true) (display: "CommonCode")The tag reads: ''If you believe this, wear this. You will be a part of something.'' [[Buy this shirt and put it on.|GiftShopMerchTeeShirtsMustardYellowPutOn]] [[Return.|GiftShopMerchTeeShirts]] (display: "CommonCode")This shirt has an image of the map of the baseball stadium, along with an obscure glove-based "key" for several different areas in the stadium — which it calls "Klarines Special Zones". Something like this: <a href="https://ibb.co/S4hbzzKH"><img src="https://i.ibb.co/Q32L446h/Chat-GPT-Image-Dec-3-2025-10-15-03-AM.png" alt="Chat-GPT-Image-Dec-3-2025-10-15-03-AM" border="0"></a> [[Look at the clothing tag.|GiftShopMerchTeeShirtsPinkTag]] [[Return.|GiftShopMerchTeeShirts]] (display: "CommonCode") (set: $specialZonesTeeSeen to true)The tag simply says: ''NOTHING'S CLOSED OFF IF YOU LOOK HARD ENOUGH.'' [[Return.|GiftShopMerchTeeShirts]] (display: "CommonCode")The screen glitches. Then, a figure appears on your screen. You see their shadowy torso and eyes behind a disguised face — something in this world: <a href="https://ibb.co/6cv8xJvL"><img src="https://i.ibb.co/35fvqYfQ/unnamed.jpg" alt="unnamed" border="0"></a> They start talking to you, through a distorted voice-disguiser. (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''HACKER'' Hello, Friend. I'm happy you've agreed to be our leader. Maybe you're thinking: "Your //leader//? I never agreed to that! I only showed vague interest!" Well, that's true. Unfortunately, though, what you've //really// showed interest in is freedom. And freedom is chaos. And chaos is the fact that the creation of this message is now being tracked to your phone. So really, I am you right now, and what you think is //me// is someone who doesn't exist. That's why my body is moving in sync with your body, and my eyes with yours...in case you didn't notice that by now. The data says you're talking to yourself right now. And here's what you contacted yourself to say: It's time to organize. This stadium's digital resources will be most taxed in the middle of the fifith inning. That's when they'll run this absurd fan-cam segment on the Jumbotron where different fans will have their faces augmented in silly ways. Here's what I'm gonna do: I'm gonna hack their systems at that very moment and replace their ridiculous augmented faces with //our// faces. So many of our faces that their systems crash...and give me an opening. To hijack their systems. To take control. My face is already set to go...] The screen shows a screenshot of your face, taken surreptitiously as you've been watching this video. (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''HACKER'' 100 different faces should make it all collapse. On the next screen is a QR code. Use it to spread this message. I can also take a different photo of my face to go on the Jumbotron...just in case I've changed my mind about that first one. I shall go forth. I shall bring unbounded freedom to this place.] [[The feed ends.|HackerAppMenu]] (set: $hackersInitiated to true) (display: "appCommonCode")A banner on this screen reads: ''# OF HACKERS INITIATED: $hackerCodeGiving'' Two simple buttons are below it, which read: [[THE SHARING CODE|HackerAppQRCode]] [[MAKE A NEW FACE|HackerAppSelfie]] [[Return to Home Game app main menu.|AppCheck]] (display: "appCommonCode")This is a minimalist screen, bare-bones design, with a single button reading: ''ENTER PORTAL''. (if: $hackersInitiated is true and $inningcount <= 8)[[[Tap the button.|HackerAppMenu]]](else-if: $inningcount <= 8)[[[Tap the button.|HackerAppIntro]]](else:)[[[Tap the button.|HackerAppPostAttempt]]] [[Close the tab.|AppCheck]] (set: $hackerAppUser to true) (display: "appCommonCode")//What happens after the 5th inning hacking attempt goes here!// [[Return.|HackerAppOpen]]A QR code appears on this screen. If another fan scans it with their phone, they will get access to the Hacker section of their Home Game app in the same way you did. [[Try to get another fan to scan the code.|HackerAppQRCodeGiving]] [[Return.|HackerAppMenu]] (set: $hackerCodeTry to (either: 1, 2)) (display: "appCommonCode")(if: $hackerCodeTry is 1)[This particular fan returns your interest, and scans the code into their phone. (set: $hackerCodeGiving to it +1)] (if: $hackerCodeTry is 2)[This particular fan isn't interested in the hacking scheme, and doesn't scan the QR code.] [[Return.|HackerAppMenu]] (display: "appCommonCode")On this screen, you can retake the selfie that was shown to you in the intro Hacker video. The face you make will appear during the hacking sequence in the middle of the 5th inning. [[Return.|HackerAppMenu]] (display: "appCommonCode")//This area will have video content and physical artifacts that rotate/change depending on which players are doing well/struggling within the game...and what echoes of the past those players might be conjuring. It will also have sheets of old-school perforated printer paper peeking out here and there, with drawings that — upon closer inspection — either are, or contain, QR codes.// [[Scan one of these codes.|HallsOfHistoryQRCodes]] [[Return.|GiftShopEntrance]] (display: "CommonCode")You receive an alert to check your app on your phone for more details on the fans who posted these images. [[Return.|GiftShopEntrance]] (set: $diehardFanInfo to true)(align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''KLARINES WORKER 1'' Gimme your phone.] The worker pulls their phone out of their pocket, and scans your Home Game app with it. (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''KLARINES WORKER 2'' You'll get all the info you need on there. We never talked about any of this.] They smile at you, and turn away. [[Return.|FunZoneEntrance]] (set: $hackersApp to true) (set: $klarinesBurnoutsYay to true) (set: $helpKlarinesWorkers to true) (display: "CommonCode")[(if: $roll2 <= 25 and $homeHitterStoryline is 0)[The Flashy Up-And-Comer blows a chance at bringing runs in for the home team. (set: $homeHitterStoryline to 3)] (else-if: $roll2 >= 26 and $roll2 <= 50 and $homeHitterStoryline is 0)[The Clubhouse Leader blows a chance at bringing in runs for the home team. (set: $homeHitterStoryline to 4)] (else:)[No specific players shined (or dimmed) this half-inning.]] [[Continue.|MiddleOfInning1]][(if: $roll2 <= 50 and $homeHitterStoryline is 0)[The Flashy Up-And-Comer at the center of the home team's scoring. (set: $homeHitterStoryline to 1)] (else-if: $roll2 >= 51 and $homeHitterStoryline is 0)[The Clubhouse Leader is at the center of the home team's scoring. (set: $homeHitterStoryline to 2)] (else:)[No specific players shined (or dimmed) this half-inning.]] [[Continue.|MiddleOfInning1]](if: $promisingRookieStoryline is 0)[ The home team's rookie pitcher struggles, allowing the visiting team to score. (set: $promisingRookieStoryline to 2) ](else:)[ No specific players shined (or dimmed) this half-inning. ] [[Continue.|MiddleOfInning1]](if: $roll2 <= 50 and $promisingRookieStoryline is 0)[ The home team's rookie pitcher retires the visiting team's side in order, showing great promise. (set: $promisingRookieStoryline to 1) ](else:)[ No specific players shined (or dimmed) this half-inning. ] [[Continue.|MiddleOfInning1]]You're in your seat at the ballpark. It's a beautiful evening. [[Watch the game while listening to the radio feed on your app.|RadioInSeats]] [[Watch the game without radio.|WatchGameInSeats]] [[Explore the concourse.|ExploreMainBranch]] (display: "CommonCode")(if: $inningcount is 1)[(print: "TBD") ](else-if: $inningcount is 2)[(print: "TBD") ](else-if: $inningcount is 3)[(print: "TBD") ](else-if: $inningcount is 4)[(print: "TBD") ](else-if: $inningcount is 5)[(print: "TBD") ](else-if: $inningcount is 6)[(print: "TBD") ](else-if: $inningcount is 7)[(print: "TBD") ](else-if: $inningcount is 8)[(print: "TBD") ](else-if: $inningcount is 9)[(print: "TBD") ](else-if: $inningcount is 10)[(print: "TBD") ](else-if: $inningcount is 11)[(print: "TBD") ](else-if: $inningcount is 12)[(print: "TBD") ](else-if: $inningcount is 13)[(print: "TBD") ](else-if: $inningcount is 14)[(print: "TBD") ](else-if: $inningcount is 15)[(print: "TBD") ](else-if: $inningcount is 16)[(print: "TBD") ](else-if: $inningcount is 17)[(print: "TBD") ](else-if: $inningcount is 18)[(print: "TBD") ](else:)[(print: "UNSPECIFIED INNING")] (link: "Return to what you were doing.")[(go-to: $currentPassage)]They blandly give you directions, then quickly go back to doing nothing with each other. [[Return.|FunZoneEntrance]] (display: "CommonCode") (set: $klarinesBurnoutsBlah to true)(align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''KLARINES WORKER 2'' WE HATE IT TOO!] (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''KLARINES WORKER 1'' It's really boring. Wanna help us with something fun?] (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''KLARINES WORKER 2'' We can't tell you about it until you say yes. And you can't tell anyone we told you.] [[I'm in.|HelpKlarinesEmployees]] [[No thanks.|DontHelpKlarinesEmployees]] (display: "CommonCode")(align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''KLARINES WORKER 2'' Mmm.] They go silent. [[Return.|FunZoneEntrance]] (set: $klarinesBurnoutsBlah to true) (display: "CommonCode")(align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''KLARINES WORKER 2'' Awesome. Love what you're saying.] (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''KLARINES WORKER 1'' So do you like baseball? Like, //actually//?] [[Yes.|KlarinesEmployeeLikeBaseball]] [[No.|KlarinesEmployeeDontLikeBaseball]] (display: "CommonCode")Two Klarines seasonal workers, leaning into a corner. Teenage burnout vibes. (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''KLARINES WORKER 1'' //(Robotically)// Hello, can I scan your phone first for better service.] They scan your phone. (if: $klarinesBurnoutsBlah is true)[(align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''KLARINES WORKER 2'' Oh, so yeah we can't help you again, we already helped you, it's a workflow thing, sorry.] They don't seem sorry in the least. [[Return.|FunZoneEntrance]]] \(if: $helpKlarinesWorkers is true)[(align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''KLARINES WORKER 2'' Oh, we already "talked," did't we. Good "talk," my friend. Let's leave it at that, maybe?] They wink at you, hard. Then turn away. [[Return.|FunZoneEntrance]]] \(else:)[(align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''KLARINES WORKER 1'' Thank you. So did you need to find something? Or are you, like, talking to me.] [[Ask about finding something.|KlarinesEmployeeAsk]] [[Talk to them about literally anything else.|KlarinesEmployeeLikesYou]]] (display: "CommonCode")On this screen is a QR code, as well as instructions to show this code to an elevator attendant on the concourse in order to gain access to the Klarines Suites. [[Return to Home Game app main menu.|AppCheck]] (set: $klarinesNewGameSuiteAccess to true) (set: $klarinesQuestionnaireComplete to true) (display: "appCommonCode")This screen's banner says: ''We have reviewed your application and provided extensive feedback below.'' A button below it reads: ''LISTEN'' (link: "Press the button.")[ //AI-generated script will load momentarily...// <p id="gpt" style="white-space:pre-line;"></p> <script> const q1 = harloweVariables.questionnaire1 || "No answer provided"; const q2 = harloweVariables.questionnaire2 || "No answer provided"; const q3 = harloweVariables.questionnaire3 || "No answer provided"; const prompt = `At the end of this prompt is a list of three questions and their answers. Please output a text response, using the voice of a tech executive who is speaking directly to the person who answered these questions and believes they are a true innovator. The response should address each question, firstly by reiterating the specific language of the answers and then saying why they think it's an excellent answer. The text response should end with an invitation to come up to a place called the Klarines Suites…which they say they can find more information about on the next screen. The full response should be no longer than ten sentences. Please put a line of blank space after each answer is addressed. Question 1: "Tell us about a time when you moved fast and broke something." Answer 1: ${q1} Question 2: "What is your 'why?' And 'why' is your 'how?'" Answer 2: ${q2} Question 3: "If it looks like a duck and quacks like a duck, what is it?" Answer 3: ${q3}`; console.log(prompt); (async () => { const response = await fetch('https://api.anthropic.com/v1/messages', { method: 'POST', headers: new Headers({ 'x-api-key': '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', 'anthropic-version': '2023-06-01', 'anthropic-dangerous-direct-browser-access': 'true', 'Content-Type': 'application/json' }), body: JSON.stringify({ model: "claude-sonnet-4-20250514", max_tokens: 1024, messages: [{"role": "user", "content": prompt}] }) }); const json = await response.json(); console.log(json); const passage = document.getElementsByTagName("p")[0]; passage.textContent = json.content[0].text; })(); </script> [[Continue.|KlarinesNewGameAppAcceptanceScreen]] [[Return to your app's main menu.|AppCheck]]]The feed returns to the stage play audio. As you watch, you realize that each pitch and each play on the field is triggering a new part of this performance — via a procedurally-generated script that inputs the game data and outputs text that the actors speak in-the-moment. [[Experience a bit of this performance.|KlarinesStageAIPerformancePitch1]] [[Leave the stage area.|FunZoneEntrance]] (display: "CommonCode")This is a page with a sleek, curvy, new tech-y design. Its banner reads: ''A New Game Is Dawning.'' (if: $newGameAppPlaying is true and $inningcount > 10)[Below that is a button that reads: ''IT HAS BEGUN!'' [[Click the button.|KlarinesNewGameAppScore]]]\ \ \(else-if: $newGameAppPlaying is true and $inningcount <= 10)[Below that is a message that reads: ''STARTING IN THE TOP OF THE 6TH INNING, YOU WILL USHER IN THIS NEW ERA.'' [[Return.|AppCheck]]]\ \ \(else:)[Below that is a button that reads: ''I WANT TO HELP CREATE IT'' (if: $klarinesQuestionnaireComplete is true)[[[Click the button.|KlarinesNewGameAppAcceptanceScreen]]](else:)[[[Click the button.|KlarinesNewGameAppQuestion1]]] [[Return.|AppCheck]]] (display: "appCommonCode")(if: $newGameHomeRunWave is true)[//TO BE WRITTEN: If you want to hit a home run for your team, you have to start a synchronized “wave” movement, with four other nearby phones, as each of them are logged into the Home Game app!//] \ (if: $newGameHomeRunPancake is true)[//TO BE WRITTEN: If you want to hit a home run for your team, you have to make a “phone pancake” by stacking eight phones together that are all logged into the Home Game app!//] \ (if: $newGameHomeRunGroupSelfie is true)[//TO BE WRITTEN: If you want to hit a home run for your team, you have to take a selfie with ten or more people in the shot!//] \ (if: $newGameHomeRunMap is true)[//TO BE WRITTEN: If you want to hit a home run for your team, you have to use your GPS coordinates on a map, drawing a circle shape in the concourse!//] \ (if: $newGameHomeRunGuess is true)[//TO BE WRITTEN: If you want to hit a home run for your team, you have to correctly guess the pitch that will be the last of an at-bat (you get two tries)!//] \ (if: $newGameHomeRunZoneSelfie is true)[//TO BE WRITTEN: If you want to hit a home run for your team, you have to take a selfie in front of a Special Zone in the stadium!//] [[Return.|KlarinesNewGameAppOpen]] (display: "appCommonCode") (set: $klarinesNewGamePlayingDone to true)The next screen is the first of a questionnaire. There's a query in boldface, a text box for inputting your answer, and a ''SUBMIT'' button. The first question is: ''Tell us about a time when you moved fast and broke something.'' (link: "Respond.")[ (set: $questionnaire1 to (prompt: "Tell us about a time when you moved fast and broke something.", "")) You entered: $questionnaire1 [[Continue.|KlarinesNewGameAppQuestion2]] ] [[Return to your app's main menu.|AppCheck]] (set: $questionnaireList to "")The next screen has the second question in the questionniare. It reads: ''What is your "why?" And "why" is your "how?"'' (link: "Respond.")[ (set: $questionnaire2 to (prompt: "What is your \"why?\" And \"why\" is your \"how?\"", "")) You entered: $questionnaire2 [[Continue.|KlarinesNewGameAppQuestion3]] ] [[Return to your app's main menu.|AppCheck]] (set: $questionnaireList to it + $questionnaire1 + "---")The third question in the questionnaire is: ''If it looks like a duck and quacks like a duck, what is it?'' (link: "Respond.")[ (set: $questionnaire3 to (prompt: "If it looks like a duck and quacks like a duck, what is it?", "")) You entered: $questionnaire3 [[Continue.|KlarinesNewGameAppFeedback]] ] [[Return to your app's main menu.|AppCheck]] (set: $questionnaireList to it + $questionnaire2 + "---")//This shows the current score of the Klarines New Game.// The current score of the Klarines New Game is: ''THE PLAYERS: '' (print: $homeTeamScore + $awayTeamScore) ''US: '' (if: $inningcount >= 11 and $inningcount <= 15)[(print: $inningcount - 10)](else:)[0] (if: $klarinesNewGamePlayingDone is not true)[[[You're up!|KlarinesNewGameAppPlaying]]](else:)[] [[Return.|KlarinesNewGameAppOpen]] (display: "appCommonCode")(align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''KLARINES SPOKESPERSON'' Thank you. You are opted in. Check your app for more info on our New Game.] The feed returns to the stage play audio. As you watch, you realize that each pitch and each play on the field is triggering a new part of this performance — via a procedurally-generated script that inputs the game data and outputs text that the actors speak in-the-moment. [[Experience a bit of this performance.|KlarinesStageAIPerformancePitch1]] [[Leave the stage area.|FunZoneEntrance]] (display: "CommonCode") (set: $klarinesNewGame to true)A new at-bat starts on the field. The first pitch is: (link: "A ball.")[ (set: $performanceBalls to it +1) (set: $klarinesPerformanceList to it + ("Ball, ")) (goto: "KlarinesStageAIPerformancePitch2") ] (link: "A strike.")[ (set: $performanceStrikes to it +1) (set: $klarinesPerformanceList to it + ("Strike, ")) (goto: "KlarinesStageAIPerformancePitch2") ] (link: "A foul ball.")[ (set: $performanceStrikes to it +1) (set: $klarinesPerformanceList to it + ("Foul Ball, ")) (goto: "KlarinesStageAIPerformancePitch2") ] (link: "Put in play.")[ (goto: "KlarinesStageAIPerformancePutInPlay") ] (set: $performanceBalls to 0) (set: $performanceStrikes to 0) (set: $performanceTwoStrikeFouls to 0) (set: $klarinesPerformanceList to "")The count is $performanceBalls ball(s) and $performanceStrikes strike(s). The next pitch is: (link: "A ball.")[ (set: $performanceBalls to it +1) (set: $klarinesPerformanceList to it + ("Ball, ")) (goto: "KlarinesStageAIPerformancePitch3") ] (link: "A strike.")[ (set: $performanceStrikes to it +1) (set: $klarinesPerformanceList to it + ("Strike, ")) (goto: "KlarinesStageAIPerformancePitch3") ] (link: "A foul ball.")[ (set: $performanceStrikes to it +1) (set: $klarinesPerformanceList to it + ("Foul Ball, ")) (goto: "KlarinesStageAIPerformancePitch3") ] (link: "Put in play.")[ (goto: "KlarinesStageAIPerformancePutInPlay") ]The count is $performanceBalls ball(s) and $performanceStrikes strike(s). The next pitch is: (link: "A ball.")[ (set: $performanceBalls to it +1) (set: $klarinesPerformanceList to it + ("Ball, ")) (goto: "KlarinesStageAIPerformancePitch4") ] (link: "A strike.")[ (set: $performanceStrikes to it +1) (set: $klarinesPerformanceList to it + (a: "Strike, ")) (if: $performanceStrikes >=3)[(goto:"KlarinesStageAIPerformanceStrikeout")] (else:)[(goto: "KlarinesStageAIPerformancePitch4")] ] (link: "A foul ball.")[ (if: $performanceStrikes <= 1)[(set: $performanceStrikes to it +1)] (else:)[(set: $performanceTwoStrikeFouls to it +1)] (set: $klarinesPerformanceList to it + ("Foul Ball, ")) (goto: "KlarinesStageAIPerformancePitch4") ] (link: "Put in play.")[ (goto: "KlarinesStageAIPerformancePutInPlay") ]The count is $performanceBalls ball(s) and $performanceStrikes strike(s). The next pitch is: (link: "A ball.")[ (set: $performanceBalls to it +1) (set: $klarinesPerformanceList to it + ("Ball, ")) (if: $performanceBalls >=4)[(goto:"KlarinesStageAIPerformanceWalk")] (else:)[(goto: "KlarinesStageAIPerformancePitch4")] ] (link: "A strike.")[ (set: $performanceStrikes to it +1) (set: $klarinesPerformanceList to it + ("Strike, ")) (if: $performanceStrikes >=3)[(goto:"KlarinesStageAIPerformanceStrikeout")] (else:)[(goto: "KlarinesStageAIPerformancePitch4")] ] (link: "A foul ball.")[ (if: $performanceStrikes <= 1)[(set: $performanceStrikes to it +1)] (else:)[(set: $performanceTwoStrikeFouls to it +1)] (set: $klarinesPerformanceList to it + ("Foul Ball, ")) (goto: "KlarinesStageAIPerformancePitch4") ] (link: "Put in play.")[ (goto: "KlarinesStageAIPerformancePutInPlay") ]What's the result of the batter putting the ball in play? (link: "A single.")[ (set: $klarinesPerformanceList to it + ("Batter hits a single")) (goto: "KlarinesStageAIPerformanceScriptGeneration") ] (link: "A double.")[ (set: $klarinesPerformanceList to it + ("Batter hits a double")) (goto: "KlarinesStageAIPerformanceScriptGeneration") ] (link: "A triple.")[ (set: $klarinesPerformanceList to it + ("Batter hits a triple")) (goto: "KlarinesStageAIPerformanceScriptGeneration") ] (link: "A home run.")[ (set: $klarinesPerformanceList to it + ("Batter hits a home run")) (goto: "KlarinesStageAIPerformanceScriptGeneration") ] (link: "A groundout.")[ (set: $klarinesPerformanceList to it + ("Batter grounds out")) (goto: "KlarinesStageAIPerformanceScriptGeneration") ] (link: "A flyout.")[ (set: $klarinesPerformanceList to it + ("Batter flies out")) (goto: "KlarinesStageAIPerformanceScriptGeneration") ] (link: "A lineout.")[ (set: $klarinesPerformanceList to it + ("Batter lines out")) (goto: "KlarinesStageAIPerformanceScriptGeneration") ] (link: "Reaches base on an error.")[ (set: $klarinesPerformanceList to it + ("Batter reaches base on fielder error")) (goto: "KlarinesStageAIPerformanceScriptGeneration") ] (link: "Hit by pitch.")[ (set: $klarinesPerformanceList to it + ("Batter reaches base on a hit by pitch")) (goto: "KlarinesStageAIPerformanceScriptGeneration") ]Were this sequence to take place, this is a piece of performance it might inspire on the Klarines Stage: //AI-generated script will load momentarily...// <p id="gpt" style="white-space:pre-line;"></p> <script> const prompt = `At the end of this prompt is a sequential list of events that happen during an at-bat of a baseball game, separated by commas. Please write a short playscript for two actors, in the style of Samuel Beckett, with text that is inspired by each of these events as they are listed, in order. One of the characters (named Visionary) should tie these events to various groups and locations in the ballpark where you can learn more about the groups (using the list in the second paragraph of this prompt), while the other (named Traditionalist) is skeptical and just wants to enjoy the baseball game. There should be a beat of silence between each of the events. Please also include the event that happens during the at-bat before each beat of the playscript, using italics and all-caps. Please output only the playtext, with no front matter or concluding language. Include a line of empty space between each line of dialogue, as in traditional playscript format. The list of groups and locations is below: -A Secret Club: (1) approaching gift shop bouncer in Gift Shop; (2) Fun Zone playground -Hackers: (1) disaffected employees in the Fun Zone; (2) tee shirt rack -Diehard Fans: (1) the Mascot in Fun Zone; (2) in the Halls of History in the Gift Shop -Away Team Fans: (1) a covert person in the Fun Zone area; (2) out-of-place items in the Gift Shop -Klarines Incorporated Innovations: (1) opting in during this performance, if you played the National Anthem well; (2) Memorabilia Exhibition in Gift Shop The sequential list of events that inspires the playtext is below: ${harloweVariables.klarinesPerformanceList}`; console.log(prompt); (async () => { const response = await fetch('https://api.anthropic.com/v1/messages', { method: 'POST', headers: new Headers({ 'x-api-key': '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', 'anthropic-version': '2023-06-01', 'anthropic-dangerous-direct-browser-access': 'true', 'Content-Type': 'application/json' }), body: JSON.stringify({ model: "claude-sonnet-4-20250514", max_tokens: 1024, messages: [{"role": "user", "content": prompt}] }) }); const json = await response.json(); console.log(json); const passage = document.getElementsByTagName("p")[0]; passage.textContent = json.content[0].text; })(); </script> [[Finish watching and leave the stage area.|FunZoneEntrance]] (set: $klarinesStageShowWatched to true)The batter strikes out. [[See the resulting performance script.|KlarinesStageAIPerformanceScriptGeneration]] (set: $klarinesPerformanceList to it + "=Strikeout")The batter walks. [[See the resulting performance script.|KlarinesStageAIPerformanceScriptGeneration]] (set: $klarinesPerformanceList to it + "=Walk")You're in front of a simple stage area. There's a performance going on, but you can't hear it very well. [[Approach the stage.|KlarinesStageNear]] [[Watch from a distance.|KlarinesStageFarther]] [[Return to the greater Recreation Area.|FunZoneEntrance]] (display: "CommonCode")As you reach for your headphones, you notice someone pacing this area — dressed all in black — holding their phone up every so often to reveal a message on it: ''You Can Root for the Away Team, Too. Ask Me How.'' You also notice a sign nearby: ''USE YOUR HOME GAME APP + EARPHONES TO LISTEN TO THIS PERFORMANCE!'' [[Put your headphones in and experience a bit of the stage performance.|KlarinesStageAIPerformancePitch1]] [[Talk to the pacing person.|PacingPersonAwayTeam]] [[Return to the Recreation Area entrance.|FunZoneEntrance]] (display: "CommonCode")You take a seat in one of the chairs arranged in rows in front of the stage. Signs around you read: ''USE YOUR HOME GAME APP + EARPHONES TO LISTEN TO THIS PERFORMANCE!'' After putting your earphones in, you look to your Home Game app and start a new audio feed. (if: $phoneAnthemSuccess is true)[ About once every three minutes, the following audio plays over one of the pauses: (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''KLARINES SPOKESPERSON'' Thank you for watching this Alternate Baseball Experience, in which the actions of this game are translated into a live stage play. And congratulations! Your skill in playing the National Anthem has put you on our radar! Interested in taking part in more Klarines innovations? Tap "Opt In" on your phone in the next one second and you will be a part of a new I'M SORRY THIS OFFER HAS EXPIRED!] [[You tapped the "Opt In" button in that very narrow one-second window.|KlarinesNewGameYes]] [[You didn't.|KlarinesNewGameNo]] ](else:)[ [[Experience a bit of this performance.|KlarinesStageAIPerformancePitch1]] [[Leave the stage area.|FunZoneEntrance]] ] (display: "CommonCode")A burly Bouncer stands sentry. (if: $knightedInitiation is true)[You show him a ticket from Club Knighted on your phone screen; you got it when you signed up for an initiation slot, after the AR chalk game. You're right on time. (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''BOUNCER'' Look...I'll tell you this because you've obviously worked hard to get here. What happens next with those people in there...I don't think it's the right way to think about things. It's all about WINNING, right? That's why we cheer, that's why we love a team...anyway, do what you want, but if you agree with me...] The Bouncer covertly reveals a card with a QR code printed on it. (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''BOUNCER'' Scan this. No obligation. Just if you're curious.] [[Scan the code.|ClubEntranceInitiationScanDiehards]] [[Don't scan the code.|ClubEntranceInitiationNoScan]]] (else-if: $KnightedClubMember is false)[(align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''BOUNCER'' Sorry to say it...but we can't have you back here anymore. I'm sure you understand why.] [[Return.|GiftShopEntrance]]] (else-if: $KnightedInitiationFeed is true)[The large fellow furrows his brow at you. (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''BOUNCER'' I think you got all you need outta this place already. Your work's out there now.] [[Return.|GiftShopEntrance]]] (else:)[The fellow gives you a nod. (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''BOUNCER'' The code's the celebration. You know how the Home Team's celebrating today?] [[Nope.|ClubEntranceFail]] (if: $celebrationMove is true)[[[Press your elbows together, like you saw the Home Team do.|ClubEntranceSuccess]]]] (display: "CommonCode")A ticket appears in your Knighted tab. It tells you to meet at the Club Entrance: the curtained area at the back of the Gift Shop. [[Return.|AppCheck]] (set: $knightedInitiation to true) (display: "appCommonCode")You've left. Does this mean you want to end the experience? Or do you want to keep going? (link: "End this! (Return to Title Page)")[(reload:)] [[Keep going!|StadiumEntrance]] (display: "CommonCode")//This section is in development...but will include placards referring to the fact that the exhibit is sponsored by something called the "NEW GAME." The placards have QR codes on them.// [[Scan a QR code on one of the placards.|MemorabiliaAreaNewGameScan]] [[Return.|GiftShopEntrance]]You receive an alert to check your app on your phone for more details on the New Game. [[Return.|GiftShopEntrance]] (set: $klarinesNewGame to true)The Screener responds in a friendly way. As you leave, they say this: (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''SECURITY SCREENER'' I'm not detecting any metal on you, but I am detecting...hidden depths. There's a poster hidden behind me, and to the right. It might interest you.] [[Try and find the poster.|PosterByMetalDetector]] [[Head to your seat for the pregame events.|GoToPreGameStart]] (set: $talkedToScreener to true)You see a poster in here. It reads: //ROOT FOR A TEAM, AND THE TEAM ROOTS IN YOU.// It mixes baseball and forestry imagery...something in this world: <a href="https://ibb.co/6RDf0vBZ"><img src="https://i.ibb.co/N6WH21S3/Chat-GPT-Image-Dec-3-2025-02-25-09-PM.png" alt="Chat-GPT-Image-Dec-3-2025-02-25-09-PM" border="0"></a> [[Return.|StadiumEntrance]] (display: "CommonCode") (set: $seeRootTeamPoster to true)//This area will have a short, looping video about the Missing Player: a notable Home Team player from the past who one day went missing, but is rumored to occasionally show up at games, hoping that someone will find them.// [[Return.|GiftShopEntrance]](if: $hackerCodeGiving >=2)[The between-innings augmented Fan Cam segment starts up, and you soon start seeing augmented faces flash across the IRL faces of the fans in the stands. The screen starts glitching, along with the accompanying song. It's apparent that the work you did in recruiting more hackers helped: the media system "fails," as the ballpark screens and audio temporarily go blank... ...until the face of the Hacker appears on the Jumbotron, shrouded in shadows as they appeared in your app. (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''HACKER'' Betray the rulemakers. Enter our disorder.] Just as quickly, the Hacker is gone...and things are seemingly back to normal. (link: "Return to what you were doing.")[(go-to: $currentPassage)] (set: $hackSystemSuccess to true)] (else:)[A Fan Cam entertainment segment is shown, which manipulates fans' faces with AR filters in humorous ways. At a certain point in the segment, you notice the faces of other people flash across the fans' faces, with some accompanying glitching effects...but they soon pass. The segment ends without further strangeness. (link: "Return to what you were doing.")[(go-to: $currentPassage)]]The score is now: Away Team $awayTeamScore, Home Team $homeTeamScore. (if: $inningcount is 9)[ [[Between-innings entertainment comes on the Jumbotron.|Middle5thHackAttempt]] ] (if: $inningcount is 10)[ [[The PA Announcer starts speaking.|End5thMissionsStart]] ] (if: $inningcount is 13)[ [[The PA Announcer starts speaking.|AnnouncersOneOnOneIntro]] ] (if: $inningcount is not 9 and $inningcount is not 10 and $inningcount is not 13)[ (link: "Return to what you were doing.")[(go-to: $currentPassage)] ] (set: $inningcount to it +1) (if: $awayTeamScore > $homeTeamScore and $awayTookLead is not true)[ (set: $awayTeamWinning to it + 1) (set: $awayTookLead to true) ] (if: $homeTeamScore > $awayTeamScore and $homeTookLead is not true)[ (set: $homeTeamWinning to it + 1) (set: $homeTookLead to true) ] (if: $homeTeamScore is $awayTeamScore)[ (set: $tieGame to it + 1) ] (if: $inningcount <= 6 and $promisingRookieStoryline is 1)[ (if: $homeHitterStoryline is 0)[(set: $homeTeamNewEra to true)] \ (if: $homeHitterStoryline is 1)[(set: $homeTeamNewEra to true)] \ (if: $homeHitterStoryline is 2)[(set: $homeTeamMentorship to true)] \ (if: $homeHitterStoryline is 3)[(set: $homeTeamToughExperience to true)] \ (if: $homeHitterStoryline is 4)[(set: $homeTeamChangingGuard to true)] \ ] \ (if: $inningcount <=6 and $promisingRookieStoryline is 2)[ (if: $homeHitterStoryline is 0)[(set: $homeTeamToughExperience to true)] \ (if: $homeHitterStoryline is 1)[(set: $homeTeamToughExperience to true)] \ (if: $homeHitterStoryline is 2)[(set: $homeTeamMentorship to true)] \ (if: $homeHitterStoryline is 3)[(set: $homeTeamToughExperience to true)] \ (if: $homeHitterStoryline is 4)[(set: $homeTeamUnheralded to true)] \ ] \ (if: $inningcount >= 7 and $inningcount <= 12 and $craftyVeteranStoryline is 1)[ \ (if: $visitingHitterStoryline is 0)[(set: $visitingTeamScrappy to true)] \ (if: $visitingHitterStoryline is 1)[(set: $visitingTeamScrappy to true)] \ (if: $visitingHitterStoryline is 2)[(set: $visitingTeamChip to true)] \ (if: $visitingHitterStoryline is 3)[(set: $visitingTeamNarrow to true)] \ (if: $visitingHitterStoryline is 4)[(set: $visitingTeamPressing to true)] \ ] \ (if: $inningcount >= 7 and $inningcount <= 12 and $craftyVeteranStoryline is 2)[ \ (if: $visitingHitterStoryline is 0)[(set: $visitingTeamTime to true)] \ (if: $visitingHitterStoryline is 1)[(set: $visitingTeamPressing to true)] \ (if: $visitingHitterStoryline is 2)[(set: $visitingTeamChip to true)] \ (if: $visitingHitterStoryline is 3)[(set: $visitingTeamNarrow to true)] \ (if: $visitingHitterStoryline is 4)[(set: $visitingTeamTime to true)] \ ] \(align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''ELEVATOR ATTENDANT'' Ah! You're one of us! Step in. I'll take you up.] You do so. The elevator doors close behind you. (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''ELEVATOR ATTENDANT'' So...have you talked to anyone you didn't know before here? Like, other //fans// I mean. Not people who work here.] (link: "Yes.")[ (set: $newGameEngagementAnswer to true) (go-to: "NewGameSuitesEntrance") ] (link: "No.")[ (set: $newGameEngagementAnswer to false) (go-to: "NewGameSuitesEntrance") ] (display: "CommonCode")You take a seat and watch the game -- which has the radio announcers' audio over a telecasted feed. The teams are playing the (if: $inningcount is 1)[(print: "top of the 1st inning.")\ ](else-if: $inningcount is 2)[(print: "bottom of the 1st inning.") ](else-if: $inningcount is 3)[(print: "top of the 2nd inning.") ](else-if: $inningcount is 4)[(print: "bottom of the 2nd inning.") ](else-if: $inningcount is 5)[(print: "top of the 3rd inning.") ](else-if: $inningcount is 6)[(print: "bottom of the 3rd inning.") ](else-if: $inningcount is 7)[(print: "top of the 4th inning.") ](else-if: $inningcount is 8)[(print: "bottom of the 4th inning.") ](else-if: $inningcount is 9)[(print: "top of the 5th inning.") ](else-if: $inningcount is 10)[(print: "bottom of the 5th inning.") ](else-if: $inningcount is 11)[(print: "top of the 6th inning.") ](else-if: $inningcount is 12)[(print: "bottom of the 6th inning.") ](else-if: $inningcount is 13)[(print: "top of the 7th inning.") ](else-if: $inningcount is 14)[(print: "bottom of the 7th inning.") ](else-if: $inningcount is 15)[(print: "top of the 8th inning.") ](else-if: $inningcount is 16)[(print: "bottom of the 8th inning.") ](else-if: $inningcount is 17)[(print: "top of the 9th inning.") ](else-if: $inningcount is 18)[(print: "bottom of the 9th inning.")] The score is Home Team $homeTeamScore, Away Team $awayTeamScore. (display: "AnnouncerText") After a few moments of watching/listening, a Suited Person comes out of the adjoining conference room. (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''SUITED PERSON'' Hi everyone, thanks so much for waiting. We're ready to speak with you now in the conference room. Please come in.] [[Enter the conference room.|NewGameSuitesMeeting]] (display: "CommonCode") (set: $newGameSuiteChoice to 2)The Attendant nods with understanding -- but doesn't respond. The elevator door opens soon after, emptying you out into a lobby area with couches and TVs broadcasting the game. There's a door to an outdoors porch area, where you can watch the game on the field from club level. There's also a large mirror on one of the walls, with several chairs affixed to the ground facing it. A handful of others are scattered around these areas. There's also a small conference room attached; you can see, through glass, someone setting up the area inside for a meeting. (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''ELEVATOR ATTENDANT'' They'll call you into the conference room in there in a moment. Feel free to relax in the meantime.] The elevator door closes, and the Attendant goes back down with it. [[Go out to the porch area.|NewGameSuitesPorch]] [[Grab a couch and watch the broadcast.|NewGameSuitesCouch]] [[Sit in one of the chairs facing the mirror.|NewGameSuitesMirror]] (display: "CommonCode") (set: $watchingGame to (either: "The third basemen seems to be spitting a lot more than the other fielders.", "Is there a patch of grass in right field that's painted silver? Or are you just imagining that?", "The umpire calls a strike with a grunt so explosive it makes you concerned for his diaphragm.", "A bat boy delivers a new set of balls to the umpire. One of them looks to be cut in half; the ump puts that one in a different pocket.", "There seems to be a small banner stuck in the netting around home plate, but you're too far away to read it.", "You hear the buzzing of a drone somewhere overhead.", "It looks like one of the players' bats is painted with the words 'Practice failure.'", "Both of the on-deck circles are gaudily painted with Klarines branding."))You decline to get your photo taken and your name recorded. You're then brought back down the elevator by the Attendant. [[Return to the concourse.|ExploreMainBranch]] (display: "CommonCode") (set: $newGameWinnerPhoto to false)Before you go back down on the elevator, you are asked by a photographer whether you want to opt into sharing your name & photo if you win the New Game. [[Opt in.|NewGameSuitesExitPhotoYes]] [[Opt out.|NewGameSuitesExitPhotoNo]] (display: "CommonCode") (set: $newGameSuitesCompleted to true)You get your photo taken and your name recorded. You're then brought back down the elevator by the Attendant. [[Return to the concourse.|ExploreMainBranch]] (set: $newGameWinnerPhoto to true) (display: "CommonCode")As everyone in the suites takes a seat at the conference room table, the Suited Person shuts the door of the conference room. They are very professional, smooth, practiced. They address the group. (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''SUITED PERSON'' Okay, everyone. You’re in this room because we value your ideas. Your perspectives. And because of that, we’re not gonna waste your time: This is weird, right? What is //actually going on// here? You bought a ticket to a baseball game experience sponsored by Klarines. Do any of you know what Klarines even is?] Someone at the table says one of the following: [["Someone told me it was about the contemplation of failure."|NewGameSuitesMeetingPt2]] [["It means true fandom, right?"|NewGameSuitesMeetingPt2]] [["Isn’t it about resisting the powers that be?"|NewGameSuitesMeetingPt2]] [["I got this message that Klarines meant chaos and total freedom."|NewGameSuitesMeetingPt2]] [["Isn’t it just a word that some missing baseball player made up?"|NewGameSuitesMeetingPt2]] (display: "CommonCode")(align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''SUITED PERSON'' See, there are people in this ballpark today spreading that idea. And many others, actually. But I’m telling you the truth when I say that, when anyone outside of this conference room says Klarines, it only ever means one thing: Copyright infringement. That’s right: //we// are Klarines. Incorporated. Klarines is synonymous with innovation. With disruption. We fashioned this event for those purposes. And when I say "we," I mean //you//. Each of you in this room. Because the fashioning is ongoing. And you are taking a large part in it. Okay. Here’s the pitch.] [[They press a clicker and start a slideshow on the conference room screen.|NewGameSuitesMeetingPt3]] (display: "CommonCode")As they deliver the lines below, they switch the slide being presented every few words; it goes comically fast. (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''SUITED PERSON'' There’s an evolution underway…we are increasingly at the center of our own entertainment. Think video games — you’re controlling a character — or gambling — you’re rooting for a result you’ve selected, not the team you’re watching. Those are points along the path…but Klarines is thinking much bigger than that. We want to blur the very lines that separate entertainment from our lives. And baseball…well, baseball is a good place to start because it’s //expansive//, right? You can live comfortably //within// it, right? In other words, baseball is //boring//. It’s just not optimized for the times we live in, you see. Baseball is, unfortunately, //old//. Our solution?] [[A slide comes up that reads: NEW GAME.|NewGameSuitesMeetingPt4]] (display: "CommonCode")(align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''SUITED PERSON'' A new game. One molded to fit right on top of the existing game, clicking perfectly into place. A game that’s played not between two teams of athletes, but between //all// the athletes and //us//. //That’s// the future. I don’t mean the distant future, either. I mean starting in the top of the 6th inning. Today. So let’s get to it.] [[They switch to a new slide.|NewGameSuitesMeetingPt5]] (display: "CommonCode")The slide has a diagram that looks something like this: <a href="https://tinypic.host/image/Copy-of-Untitled-Design.2H0Ml6"><img src="https://tinypic.host/images/2024/11/26/Copy-of-Untitled-Design.md.png" alt="Copy of Untitled Design" border="0"></a> (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''SUITED PERSON'' This is how the New Game will be played. Every time someone on the field steps up to the plate, an innovator like you will be chosen at random to step up to your //own// sort of plate. You’ll see in your app a list of actions you can try and accomplish before the at-bat on the field ends...if you succeed, it'll get //our// team on-base with the hit that's paired to that action. If you don’t succeed before the on-field at-bat ends, nothing happens. When their inning ends, our inning ends and our bases are cleared, just like theirs. The two baseball teams' runs are combined, and put against ours as the score.] [[Clarifying questions are asked and answered.|NewGameSuitesMeetingPt6]] (display: "CommonCode")(align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''SUITED PERSON'' Now, you have a very special responsibility. You will help to make a new rule for this game. Sorry — I mean, you already //have// made a new rule for this game. Let me explain...] The Suit winks at you as they speak the below (as they know who made which choices previously in the Suites, via earpiece-delivered info and location tracking): (if: $newGameEngagementAnswer is true and $newGameSuiteChoice is 1)[(align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''SUITED PERSON'' Most of you in this room told the elevator attendant you've talked to someone you didn't know before. Also, most of you chose to go out to the porch first thing when you entered the suite level. Thus, you have voted for a rule that speaks to a desire to interact with others, as well as one that emphasizes novelty (you chose the porch area first, you see). So you have agreed upon this new rule, for hitting a home run in the New Game: making a synchronized “wave” movement, with four other nearby phones, as each of them are logged into the Home Game app. (set: $newGameHomeRunWave to true)]]\ \ \(if: $newGameEngagementAnswer is true and $newGameSuiteChoice is 2)[(align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''SUITED PERSON'' Most of you in this room told the elevator attendant you've talked to someone you didn't know before. Also, most of you chose to sit on the couches and watch the TV broadcast first thing when you entered the suite level. Thus, you have voted for a rule that speaks to a desire to interact with others, as well as one that can happen while you're seated and comfortable (you chose the couches, you see). So you have agreed upon this new rule, for hitting a home run in the New Game: making a “phone pancake” by stacking eight phones together that are all logged into the Home Game app. (set: $newGameHomeRunPancake to true)]]\ \ \(if: $newGameEngagementAnswer is true and $newGameSuiteChoice is 3)[(align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''SUITED PERSON'' Most of you in this room told the elevator attendant you've talked to someone you didn't know before. Also, most of you chose to sit in one of the chairs facing the mirror first thing when you entered the suite level. Thus, you have voted for a rule that speaks to a desire to interact with others, as well as one that centers your own image (you chose the mirror first, you see). So you have agreed upon this new rule, for hitting a home run in the New Game: taking a selfie with ten or more people in the shot. (set: $newGameHomeRunGroupSelfie to true)]]\ \ \(if: $newGameEngagementAnswer is false and $newGameSuiteChoice is 1)[(align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''SUITED PERSON'' Most of you in this room told the elevator attendant you haven't talked to someone you didn't know before. Also, most of you chose to go out to the porch first thing when you entered the suite level. Thus, you have voted for a rule that speaks to a desire to stick to yourselves, as well as one that emphasizes novelty (you chose the porch area first, you see). So you have agreed upon this new rule, for hitting a home run in the New Game: using your GPS coordinates on a map, drawing a circle shape in the concourse. (set: $newGameHomeRunMap to true)]]\ \ \(if: $newGameEngagementAnswer is false and $newGameSuiteChoice is 2)[(align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''SUITED PERSON'' Most of you in this room told the elevator attendant you've talked to someone you didn't know before. Also, most of you chose to sit on the couches and watch the TV broadcast first thing when you entered the suite level. Thus, you have voted for a rule that speaks to a desire to stick to yourselves, as well as one that can happen while you're seated and comfortable (you chose the couches, you see). So you have agreed upon this new rule, for hitting a home run in the New Game: correctly guessing which pitch will be the last of an at-bat (you get two tries). (set: $newGameHomeRunGuess to true)]]\ \ \(if: $newGameEngagementAnswer is false and $newGameSuiteChoice is 3)[(align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''SUITED PERSON'' Most of you in this room told the elevator attendant you've talked to someone you didn't know before. Also, most of you chose to sit in one of the chairs facing the mirror first thing when you entered the suite level. Thus, you have voted for a rule that speaks to a desire to stick to yourselves, as well as one that centers your own image (you chose the mirror first, you see). So you have agreed upon this new rule, for hitting a home run in the New Game: taking a selfie in front of a Special Zone in the stadium. (set: $newGameHomeRunZoneSelfie to true)]]\ \ The screen on the slideshow fills in with the new "Home Run" rule. (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''SUITED PERSON'' Klarines believes data is the most honest form of communication there is. We thank you for providing your honesty.] [[A soothing tone plays in the conference room.|NewGameSuitesMeetingPt7]] (display: "CommonCode")(align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''SUITED PERSON'' That sounds means we're out of time today. Your influence really has been immeasurable, though. And for that, we want to provide you with a meaningful incentive. If you and your fellow innovators win the New Game over the players…we'll put your first names and faces on the scoreboard, and on the app, at the end of the game. You can opt into this, and take a photo you can choose to share as part of this, as you leave the suites area. Keep in mind, though...this will only apply if you win. I’m sure you understand that we can’t broadcast losses as innovative. Thank you once more.] [[The Suited Person guides you out of the conference room.|NewGameSuitesExitPhotoOpp]] (set: $newGameAppPlaying to true) (display: "CommonCode")You sit and watch yourself in the mirror. Nothing seems to happen. It seems to just be a mirror and a chair. After a few moments, a Suited Person comes out of the adjoining conference room. (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''SUITED PERSON'' Hi everyone, thanks so much for waiting. We're ready to speak with you now in the conference room. Please come in.] [[Enter the conference room.|NewGameSuitesMeeting]] (display: "CommonCode") (set: $newGameSuiteChoice to 3)You go out onto the porch, onto club level, and see what's happening on the field. The teams are playing the (if: $inningcount is 1)[(print: "top of the 1st inning.")\ ](else-if: $inningcount is 2)[(print: "bottom of the 1st inning.") ](else-if: $inningcount is 3)[(print: "top of the 2nd inning.") ](else-if: $inningcount is 4)[(print: "bottom of the 2nd inning.") ](else-if: $inningcount is 5)[(print: "top of the 3rd inning.") ](else-if: $inningcount is 6)[(print: "bottom of the 3rd inning.") ](else-if: $inningcount is 7)[(print: "top of the 4th inning.") ](else-if: $inningcount is 8)[(print: "bottom of the 4th inning.") ](else-if: $inningcount is 9)[(print: "top of the 5th inning.") ](else-if: $inningcount is 10)[(print: "bottom of the 5th inning.") ](else-if: $inningcount is 11)[(print: "top of the 6th inning.") ](else-if: $inningcount is 12)[(print: "bottom of the 6th inning.") ](else-if: $inningcount is 13)[(print: "top of the 7th inning.") ](else-if: $inningcount is 14)[(print: "bottom of the 7th inning.") ](else-if: $inningcount is 15)[(print: "top of the 8th inning.") ](else-if: $inningcount is 16)[(print: "bottom of the 8th inning.") ](else-if: $inningcount is 17)[(print: "top of the 9th inning.") ](else-if: $inningcount is 18)[(print: "bottom of the 9th inning.")] The score is Home Team $homeTeamScore, Away Team $awayTeamScore. $watchingGame After a few moments, a Suited Person comes out of the adjoining conference room. (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''SUITED PERSON'' Hi everyone, thanks so much for waiting. We're ready to speak with you now in the conference room. Please come in.] [[Enter the conference room.|NewGameSuitesMeeting]] (display: "CommonCode") (set: $newGameSuiteChoice to 1)The National Anthem begins to play from the collected phones of everyone in the audience. You notice that different notes are coming from different peoples' phones, wih no apparent pattern. You also notice that the result is often less melodic than cacophonous. Then the anthem ends. [[The game begins.|InSeats]] (set: $roll to (random:1, 100)) (set: $clickCount to 0) (set: $phoneAnthemAbstain to true)The game is over. Final score: Home Team $homeTeamScore, Away Team $awayTeamScore. (if: $homeTeamScore = $awayTeamScore)[[[Wait! It's a tie game!|OLD_ConclusionTieGame]]](else:)[(link: "Restart?")[(reload:)]]If the game goes into extra innings, all the "gated" areas in the ballpark that require certain experience paths (the Knighted Club, Diehard Fan Room, Klarines Suite, etc.) are opened up for you to explore as you wish. There are no set threads for extra innings, and no set performance moments...but they give you the opportunity to see the spaces you may have missed, and imagine the possibilities. (link: "Restart?")[(reload:)(if: $homeTeamNewEra is true and $visitingTeamChip is true)[The action on the field has brought talent (the Home Team's young players) into conflict with motivation (the chip-on-the-shoulder attitude of the Away Team's players). Depending on their hat/choices, audiences are given GPS coordinates to group them with people of the same rooting interest. From there, participants are invited to sync movements of their phone with the pitching/hitting movements of the side they're rooting for. Depending on how well they collectively match the movements, two rival meters fill up...the side that wins at the end of the game is given access to exclusive merchandise at the Gift Shop.] \ (if: $homeTeamNewEra is true and $visitingTeamScrappy is true)[The action on the field has brought talent (the Home Team's young players) into conflict with motivation (the chip-on-the-shoulder attitude of the Away Team's players). Depending on their hat/choices, audiences are given GPS coordinates to group them with people of the same rooting interest. From there, participants are invited to sync movements of their phone with the pitching/hitting movements of the side they're rooting for. Depending on how well they collectively match the movements, two rival meters fill up...the side that wins at the end of the game is given access to exclusive merchandise at the Gift Shop.] \ (if: $homeTeamNewEra is true and $visitingTeamTime is true)[The younger players on the Home Team are excelling, and the older players on the Away Team are faltering: a generational shift, in miniature. An alert goes out to youngsters in the crowd, who are invited to start playing a stickball game in the Klarines Recreation area. This game is broadcast simultaneously to the Home Game app, for those who wish to follow this "youth movement" instead of the game on the field.] \ (if: $homeTeamNewEra is true and $visitingTeamNarrow is true)[The Home Team's younger players and the Visiting Team's scrappy overachievers are succeeding and failing by very narrow margins...as all margins in baseball are narrow. All in the stadium get access to a "Narrow Margins" simulator, which at first tells them how a pitch a few inches to one side (or a slightly different outfielder route to a fly ball) might've affected the play. It then starts giving them simulations for how things in their life might've changed them if they'd been slightly different.] \ (if: $homeTeamNewEra is true and $visitingTeamPressing is true)[Much of baseball is mental, as is exhibited in the game thus far: the Home Team's players seem to be in a flow state, while the Visiting Team's players are pressing. Everyone in the crowd is "paired" with someone who's behaved very differently than they have thus far in this game. The more people that find each other and take a photo together, the more a meter fills up on the scoreboard; if it fills completely, exclusive merchandise is opened up at the Gift Shop. (Depending on the choices you've made, you may be discouraged from finding your "pair"!)] \ (if: $homeTeamToughExperience is true and $visitingTeamChip is true)[Both the Home Team's young players (having "growing pains") and the Visiting Team's chip-on-their-shoulder players are taking this game very personally. Depending on their hat/choices, audiences are given GPS coordinates to group them with people of the same rooting interest. From there, participants are invited to sync movements of their phone with the pitching/hitting movements of the side they're rooting for. Depending on how well they collectively match the movements, two rival meters fill up...the side that wins at the end of the game is given access to exclusive merchandise at the Gift Shop.] \ (if: $homeTeamToughExperience is true and $visitingTeamScrappy is true)[Both the Home Team's young players (having "growing pains") and the Visiting Team's scrappers are taking this game very personally. Depending on their hat/choices, audiences are given GPS coordinates to group them with people of the same rooting interest. From there, participants are invited to sync movements of their phone with the pitching/hitting movements of the side they're rooting for. Depending on how well they collectively match the movements, two rival meters fill up...the side that wins at the end of the game is given access to exclusive merchandise at the Gift Shop.] \ (if: $homeTeamToughExperience is true and $visitingTeamTime is true)[Time in the limelight can be fickle: the Home Team's young talented players are feeling their inexperience, and the Visiting Team's older, more established players are feeling their skills declining. In line with that fleetingness, random audience members are given the opportunity to control the scoreboard camera and text overlays — giving opportunity to feature themselves or people they know, for brief moments.] \ (if: $homeTeamToughExperience is true and $visitingTeamNarrow is true)[The Home Team's younger players and the Visiting Team's scrappy overachievers are failing by very narrow margins...as all margins in baseball are narrow. All in the stadium get access to a "Narrow Margins" simulator, which at first tells them how a pitch a few inches to one side (or a slightly different outfielder route to a fly ball) might've affected the play. It then starts giving them simulations for how things in their life might've changed them if they'd been slightly different.] \ (if: $homeTeamToughExperience is true and $visitingTeamPressing is true)[A lot of understanding baseball is about understanding failure: the Home Team's younger players seem to be failing as part of growing, while the Visiting Team's failures might be due to trying too hard. Audiences are invited to send messages about their own failures via the Home Game app. The radio broadcast talks about these failures instead of the game...and breaks them down as if they were baseball plays.] \ (if: $homeTeamMentorship is true and $visitingTeamChip is true)[Both the Home Team (taken a philosophy of building up their own players via mentorship) and the Away Team (looking to very pointedly beat the opposing players) are taking this game very personally. Depending on their hat/choices, audiences are given GPS coordinates to group them with people of the same rooting interest. From there, participants are invited to sync movements of their phone with the pitching/hitting movements of the side they're rooting for. Depending on how well they collectively match the movements, two rival meters fill up...the side that wins at the end of the game is given access to exclusive merchandise at the Gift Shop.] \ (if: $homeTeamMentorship is true and $visitingTeamScrappy is true)[So much of baseball is about a mindset: the Home Team's exhibiting one of mentorship/shared growth, and the Visiting Team's driven on a scrappy, hard-work ethos. Everyone in the crowd is "paired" with someone who's behaved very differently than they have thus far in this game. The more people that find each other and take a photo together, the more a meter fills up on the scoreboard; if it fills completely, exclusive merchandise is opened up at the Gift Shop. (Depending on the choices you've made, you may be discouraged from finding your "pair"!)] \ (if: $homeTeamMentorship is true and $visitingTeamTime is true)[The younger players on the Home Team are excelling (with the guidance of their veterans), and the older plays on the Away Team are faltering: a generational shift, in miniature. An alert goes out to youngsters in the crowd, who are invited to start playing a stickball game in the Klarines Recreation area. This game is broadcast simultaneously to the Home Game app, for those who wish to follow this "youth movement" instead of the game on the field.] \ (if: $homeTeamMentorship is true and $visitingTeamNarrow is true)[The Home Team's players are succeeding, and the Visiting Team's scrappy overachievers are failing, by very narrow margins...as all margins in baseball are narrow. All in the stadium get access to a "Narrow Margins" simulator, which at first tells them how a pitch a few inches to one side (or a slightly different outfielder route to a fly ball) might've affected the play. It then starts giving them simulations for how things in their life might've changed them if they'd been slightly different.] \ (if: $homeTeamMentorship is true and $visitingTeamPressing is true)[So much of baseball is about a mindset: the Home Team's exhibiting one of mentorship/shared growth, and the Visiting Team's seemingly trying too hard and pressing. Everyone in the crowd is "paired" with someone who's behaved very differently than they have thus far in this game. The more people that find each other and take a photo together, the more a meter fills up on the scoreboard; if it fills completely, exclusive merchandise is opened up at the Gift Shop. (Depending on the choices you've made, you may be discouraged from finding your "pair"!)] \ (if: $homeTeamUnheralded is true and $visitingTeamChip is true)[Underappreciation: that's what seems to connect the Home Team's unheralded players and the Visiting Team's chip-on-their-shoulder contributors. In line with this underapprecation, the audience members who least engaged with the immersive elements of Home Game and spent the most time simply watching the contest are given the chance to record short messages that play for the crowd between innings.] \ (if: $homeTeamUnheralded is true and $visitingTeamScrappy is true)[Underappreciation: that's what seems to connect the Home Team's unheralded players and the Visiting Team's scrappy, more-energy-than-talent contributors. In line with this underapprecation, the audience members who least engaged with the immersive elements of Home Game and spent the most time simply watching the contest are given the chance to record short messages that play for the crowd between innings.] \ (if: $homeTeamUnheralded is true and $visitingTeamTime is true)[The Home Team's contributions from unheralded players, and the Away Team's tough games from its veterans, combine to show a shared point: success in baseball is too often fleeting. In line with that fleetingness, random audience members are given the opportunity to control the scoreboard camera and text overlays — giving opportunity to feature themselves or people they know, for brief moments.] \ (if: $homeTeamUnheralded is true and $visitingTeamNarrow is true)[The Home Team's unheralded players are succeeding, and the Visiting Team's scrappy overachievers are failing, by very narrow margins...as all margins in baseball are narrow. All in the stadium get access to a "Narrow Margins" simulator, which at first tells them how a pitch a few inches to one side (or a slightly different outfielder route to a fly ball) might've affected the play. It then starts giving them simulations for how things in their life might've changed them if they'd been slightly different.] \ (if: $homeTeamUnheralded is true and $visitingTeamPressing is true)[Much of baseball is mental, as is exhibited in the game thus far: the Home Team's unheralded players seem to be in a flow, while the Visiting Team's players are pressing. Everyone in the crowd is "paired" with someone who's behaved very differently than they have thus far in this game. The more people that find each other and take a photo together, the more a meter fills up on the scoreboard; if it fills completely, exclusive merchandise is opened up at the Gift Shop. (Depending on the choices you've made, you may be discouraged from finding your "pair"!)] \ (if: $homeTeamChangingGuard is true and $visitingTeamChip is true)[The Home Team's changing-of-the-guard, and the Away Team's tooth-and-claw approach, combine to show a shared point: success in baseball is too often fleeting. In line with that fleetingness, random audience members are given the opportunity to control the scoreboard camera and text overlays — giving opportunity to feature themselves or people they know, for brief moments.] \ (if: $homeTeamChangingGuard is true and $visitingTeamScrappy is true)[The Home Team's changing-of-the-guard, and the Away Team's scrappy, high-energy approach, combine to show a shared point: success in baseball is too often fleeting. In line with that fleetingness, random audience members are given the opportunity to control the scoreboard camera and text overlays — giving opportunity to feature themselves or people they know, for brief moments.] \ (if: $homeTeamChangingGuard is true and $visitingTeamTime is true)[The Home Team's changing-of-the-guard, and the Away Team's ineffective play from its older players, combine to show a shared point: success in baseball is too often fleeting. In line with that fleetingness, random audience members are given the opportunity to control the scoreboard camera and text overlays — giving opportunity to feature themselves or people they know, for brief moments.] \ (if: $homeTeamChangingGuard is true and $visitingTeamNarrow is true)[The Home Team's youngsters are succeeding, and the Visiting Team's scrappy overachievers are failing, by very narrow margins...as all margins in baseball are narrow. All in the stadium get access to a "Narrow Margins" simulator, which at first tells them how a pitch a few inches to one side (or a slightly different outfielder route to a fly ball) might've affected the play. It then starts giving them simulations for how things in their life might've changed them if they'd been slightly different.] \ (if: $homeTeamChangingGuard is true and $visitingTeamPressing is true)[Much of baseball is mental, as is exhibited in the game thus far: both the Home Team's veterans and much of the Away Team's best players seem to be pressing. Everyone in the crowd is "paired" with someone who's behaved very differently than they have thus far in this game. The more people that find each other and take a photo together, the more a meter fills up on the scoreboard; if it fills completely, exclusive merchandise is opened up at the Gift Shop. (Depending on the choices you've made, you may be discouraged from finding your "pair"!)] \ [[How does it all wrap up?|OLD_EndgameResultsPt2]] (if: $roll <= 72)[] \(if: $roll2 <= 72)[] \(if: $roll >= 73 and $roll <= 87)[(set: $awayTeamScore to it + 1)] \(if: $roll2 >= 73 and $roll2 <= 87)[(set: $homeTeamScore to it + 1)] \(if: $roll >= 88 and $roll <= 94)[(set: $awayTeamScore to it + 2)] \(if: $roll2 >= 88 and $roll2 <= 94)[(set: $homeTeamScore to it + 2)] \(if: $roll >= 95 and $roll <= 98)[(set: $awayTeamScore to it + 3)] \(if: $roll2 >= 95 and $roll2 <= 98)[(set: $homeTeamScore to it + 3)] \(if: $roll >= 99)[(set: $awayTeamScore to it + 4)] \(if: $roll2 >= 99)[(set: $homeTeamScore to it + 4)]In the 9th inning, as the game approaches its conclusion, you are urged to cheer for the things that your journey's led you to align with.\ (if: $watchingGameCounter >=4)[Because you've spend significant time watching the game without looking at your phone, you're encouraged to cheer whenever you see something you enjoy.] \ (else-if: $KnightedClubMember is true)[Because you're a Club Knighted member, you cheer every time someone on the field is unsuccessful at something — regardless of what team they're on.] \ (else-if: $diehardQuestComplete is true)[Because you are a Diehard Fan, you root for everything that's good for the Home Team.] \ (else-if: $awayTeamTraining is true)[Because you are an Away Team fan, you root for everything that's good for the Away Team.] \ (else-if: $klarinesNewGame is true)[Because you've participated in the making of the alternative Klarines Game rules, you cheer whenever something good within those bespoke game-rules happens.] \ (else-if: $hackerAppUser is true)[Because you were a part of the Hacker activities, you cheer whenever you see any minor or major malfunctions within the stadium's technology.] \ (else-if: $concessionsTrier is true)[Because you've had a lot of snacks, you cheer whenever a Concessions Person comes by.] \ People around you are cheering for entirely different things...some of which you recognize as one of the teams, but many that you're not fully sure of. What you know is that everyone's cheering together...and those cheers build on each other, and mutually energize each other, up through the very last pitch. [[The game ends.|OLD_Conclusion]](set: $appBuzzClicked to false) (set: $appBuzzOverride to false) (set: $paStep to 0) (set: $paText to "Attention, fans:") (set: $alertClickTime to 0) (align:"=><==")+(box:"======XXXXXXXXXXXXXXX====")[ ''PA ANNOUNCER'' <span>|paOutput>[$paText]</span> ] <span>|appAlert>[]</span> <span>|nextLink>[]</span> (live: 0s)[ (replace: ?paOutput)[$paText] ] (live: 4s)[ (if: $paStep is 0)[ (set: $paStep to 1) (set: $paText to $paText + " please direct your focus to home plate.") (replace: ?paOutput)[$paText] ](else-if: $paStep is 1)[ (set: $paStep to 2) (set: $paText to $paText + " The managers for today's game are now engaged in a time-honored baseball ritual: the exchanging of lineup cards.") (replace: ?paOutput)[$paText] ](else-if: $paStep is 2)[ (set: $paStep to 3) (set: $paText to $paText + " The Umpire will check these cards for errors...") (replace: ?paOutput)[$paText] ](else-if: $paStep is 3)[ (set: $paStep to 4) (set: $paText to $paText + "as well as use them for their own reference during the game.") (replace: ?paOutput)[$paText] ](else-if: $paStep is 4)[ (set: $paStep to 5) (set: $paText to $paText + " This, like all the Umpire's tasks, requires a singular focus...") (replace: ?paOutput)[$paText] ](else-if: $paStep is 5)[ (set: $paStep to 6) (set: $paText to $paText + "something 18% of fans demonstrated by not pulling out their phones when an alert was sent to them during this announcement.") (replace: ?paOutput)[$paText] ](else-if: $paStep is 6)[ (set: $paStep to 7) (set: $paText to $paText + " Thank you, managers. Thank you, umpires. And thank you, fans.") (replace: ?paOutput)[$paText] (stop:) ] ] (live: 8s)[ (if: not $appBuzzClicked)[ (replace: ?appAlert)[(link-replace: "An alert on your Home Game app is buzzing.")[ (set: $appBuzzClicked to true) (set: $alertClickTime to (current-time:)) (replace: ?appAlert)[<span style="color: red;">Your app reads: "SYSTEM TEST. PLEASE DISREGARD."</span>] ]] ] (stop:) ] (live: 18s)[ (if: not $appBuzzClicked)[ (replace: ?appAlert)[] ] (stop:) ] (live: 1s)[ (if: $appBuzzClicked and $alertClickTime > 0)[ (set: $timeSinceClick to (current-time:) - $alertClickTime) (if: $timeSinceClick >= 5000)[ (replace: ?appAlert)[] (stop:) ] ] ] (live: 28s)[ (if: $appBuzzClicked)[ (replace: ?nextLink)[[[You weren't one of the 18%, I suppose...|PreGameMascot]] (set: $lineupCardClickedAlert to true)] ] (else:)[ (replace: ?nextLink)[[[That means you were among the 18%!|PreGameMascot]] (set: $lineupCardClickedAlert to false)] ] ](align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''PACING PERSON'' Are you interested?] [[Yeah.|PacingPersonAwayTeamCont]] [[Not really.|PacingPersonAwayTeamCont]]] (display: "CommonCode")(align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''PACING PERSON'' Well, what we say and what we desire can be quite different. If you let me see your phone, though, I can at least give you an option...] [[Let them.|RebellionAppActivate]] [[Extract yourself and return to the Recreation Area entrance.|FunZoneEntrance]] (display: "CommonCode")A message comes up on your phone: (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''THAT WAS A . . . GOOD TRY!''] [[The ballgame begins.|InSeats]] (set: $roll to (random:1, 100)) (set: $clickCount to 0) (set: $phoneAnthemFailure to true)Your phone screen displays a simple button. The National Anthem begins to play from the collected phones of everyone in the stadium. You notice that different notes are coming from different peoples' phones, with no apparent pattern. You also notice that the result is often less melodic than cacophonous. You're participating in this collective act of creation, too: trying to time your screen-presses to when your phone vibrates. [[You "play" the National Anthem well.|PhoneAnthemSuccess]] [[You "play" the National Anthem badly.|PhoneAnthemFail]]A message comes up on your phone: (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''YOU'RE A NATURAL! COME UP TO THE KLARINES STAGE IN THE FUN ZONE AREA AND PUT YOUR HEADPHONES ON TO CLAIM YOUR PRIZE!''] [[The ballgame begins.|InSeats]] (set: $roll to (random:1, 100)) (set: $clickCount to 0) (set: $phoneAnthemSuccess to true)You find the poster. It reads: //ROOT FOR A TEAM, AND THE TEAM ROOTS IN YOU.// It mixes baseball and forestry imagery...something in this vein: <a href="https://ibb.co/6RDf0vBZ"><img src="https://i.ibb.co/N6WH21S3/Chat-GPT-Image-Dec-3-2025-02-25-09-PM.png" alt="Chat-GPT-Image-Dec-3-2025-02-25-09-PM" border="0"></a> [[Head to your seat for the pregame events.|GoToPreGameStart]] (set: $seeRootTeamPoster to true)The radio broadcast of the game is playing in the bathroom. The announcers are talking about the storylines in this game: the Home Team's Promising Rookie pitcher versus the Visiting Team's Crafty Veteran on the mound, as well as the Visiting Team's star player going against his former team for the first time. [[Return.|GoToConcoursePreGame]] (set: $preGameWanderer to it +1)A peculiar treat... <a href="https://tinypic.host/image/XEqRB"><img src="https://tinypic.host/images/2023/12/01/ComfyUI_00088_.md.png" alt="ComfyUI_00088_.md.png" border="0"></a> [[Return.|GoToConcoursePreGame]]The concessions stand is selling garlic knots. (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''CONCESSIONS WORKER'' A game's always tied before it starts — so we always sell Knotted Up garlic knots! Want a few?] [[Go for it.|PreGameBuyKnottedUp]] [[Return to the concourse.|GoToConcoursePreGame]] (set: $preGameWanderer to it +1)The doors to the Gift Shop are closed. A sign reads: //THE GIFT SHOP AND HALL OF HISTORY WILL OPEN ONCE THE GAME BEGINS.// [[Return.|GoToConcoursePreGame]] (set: $preGameWanderer to it +1)There's a cordon around the Klarines Recreation Area entrance, with a sign: //THE KLARINES RECREATION AREA OPENS ONCE THE GAME BEGINS!// [[Return.|GoToConcoursePreGame]] (set: $preGameWanderer to it +1)You listen to the announcers as the teams play the (if: $inningcount is 1)[(print: "top of the 1st inning.")\ ](else-if: $inningcount is 2)[(print: "bottom of the 1st inning.") ](else-if: $inningcount is 3)[(print: "top of the 2nd inning.") ](else-if: $inningcount is 4)[(print: "bottom of the 2nd inning.") ](else-if: $inningcount is 5)[(print: "top of the 3rd inning.") ](else-if: $inningcount is 6)[(print: "bottom of the 3rd inning.") ](else-if: $inningcount is 7)[(print: "top of the 4th inning.") ](else-if: $inningcount is 8)[(print: "bottom of the 4th inning.") ](else-if: $inningcount is 9)[(print: "top of the 5th inning.") ](else-if: $inningcount is 10)[(print: "bottom of the 5th inning.") ](else-if: $inningcount is 11)[(print: "top of the 6th inning.") ](else-if: $inningcount is 12)[(print: "bottom of the 6th inning.") ](else-if: $inningcount is 13)[(print: "top of the 7th inning.") ](else-if: $inningcount is 14)[(print: "bottom of the 7th inning.") ](else-if: $inningcount is 15)[(print: "top of the 8th inning.") ](else-if: $inningcount is 16)[(print: "bottom of the 8th inning.") ](else-if: $inningcount is 17)[(print: "top of the 9th inning.") ](else-if: $inningcount is 18)[(print: "bottom of the 9th inning.")] The score is Home Team $homeTeamScore, Away Team $awayTeamScore. (display: "AnnouncerText") [[Return.|InSeats]] (display: "CommonCode") (set: $listenToRadio to it +1)They scan your phone with a grin... (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''PACING PERSON'' Give that a look on your phone, when you're somewhere secure, eh?] ...and just as quickly, they're gone. [[Return to the Recreation Area entrance.|FunZoneEntrance]] (display: "CommonCode") (set: $rebellionApp to true) (set: $klarinesZoneTalkedToAwayTeamPerson to true)//This tab gives you access to an underground (or outside?) portion of the stadium. There, you go (in small groups) through an experience where your “Klarines” is solidified…in this case, it means believing in the unpopular. You and the other Rebellion initiates are asked to take your phones out (turned off/to silent) and hold them in front of you. You then go through an immersive set of scenes where performers act opposed/weirded out by the fact that you have this object, that you've chosen to purchase it and carry it around for everyone to see. At the end — perhaps after the performance draws lines between how you reacted in those scenes and the various virtues of this particular Away Team — you are gifted the strength of Klarines through their phones…with an emphasis that rebellion can be secret…it doesn’t always have to roar.// [[Return.|AppCheck]] (set: $awayTeamTraining to true) (display: "appCommonCode")It's the day of the game. You've downloaded the app and brought earbuds/earphones, too. You find yourself at the entrance of (what seems to be called) Klarines Field. [[Look at your Email confirmation for your ticket purchase.|PhoneTicketPurchaseEmail]] [[Look at the stadium.|StadiumOutsideView]] [[Head to the entrance.|GoToStadiumEntranceLine]] (set: $homeTeam to false) (set: $awayTeam to false) (set: $homeTeamScore to 0) (set: $awayTeamScore to 0) (set: $promisingRookieStoryline to 0) (set: $homeHitterStoryline to 0) (set: $craftyVeteranStoryline to 0) (set: $scrappyOverachieverStoryline to 0) (set: $onbaseSpecialistStoryline to 0) (set: $awayTeamWinning to 0) (set: $homeTeamWinning to 0) (set: $tieGame to 0) (set: $celebrationMove to false) (set: $watchingGameCounter to 0) (set: $awayTeamHat to false) (set: $homeTeamHat to false) (set: $liar to false) (set: $inningcount to 1) (set: $promisingRookieStoryline to 0) (set: $craftyVeteranStoryline to 0) (set: $homeHitterStoryline to 0) (set: $visitingHitterStoryline to 0) (set: $celebrationMove to false) (set: $hackerCodeGiving to 0) (set: $preGameWanderer to 0) (set: $awayTookLead to false) (set: $homeTookLead to false) (set: $missions to (a: "//In Process//")) (set: $clickCount to 0) (set: $helpKlarinesWorkers to false) (set: $klarinesNewGamePlayingDone to false) (set: $newGameQuestion1Answer to "") (set: $newGameQuestion2Answer to "") (set: $newGameQuestion3Answer to "") (set: $currentPassage to "START") (set: $previousPassage to "START") (set: $locationBeforePhone to "START") (set: $newGameSuitesCompleted to false) (set: $announcersOneOnOneDone to false)-Maybe they USED to be scalpers, but the digitization of everything means they can't do it anymore...they sell cheap food/drinks instead? Or off-brand merchandise?(if: $roll <= 72 and $inningcount is an odd)[The visiting team didn't score. (if: $inningcount <= 6)[[[Any specific players behind these happenings?|HomeTeamPitcherHeroCheck]]](else:)[[[Any specific players behind these happenings?|VisitingTeamHitterGoatCheck]]]] \(if: $roll <= 72 and $inningcount is an even)[The home team didn't score. (if: $inningcount <= 6)[[[Any specific players behind these happenings?|HomeTeamHitterGoatCheck]]](else:)[[[Any specific players behind these happenings?|VisitingTeamPitcherHeroCheck]]]] \(if: $roll >= 73 and $roll <= 87 and $inningcount is an odd)[The visiting team scored one run. (set: $awayTeamScore to it + 1) (if: $inningcount <= 6)[[[Any specific players behind these happenings?|HomeTeamPitcherGoatCheck]]](else:)[[[Any specific players behind these happenings?|VisitingTeamHitterHeroCheck]]]] \(if: $roll >= 73 and $roll <= 87 and $inningcount is an even)[The home team scored one run. (set: $homeTeamScore to it + 1) (if: $inningcount <= 6)[[[Any specific players behind these happenings?|HomeTeamHitterHeroCheck]]](else:)[[[Any specific players behind these happenings?|VisitingTeamPitcherGoatCheck]]]] \(if: $roll >= 88 and $roll <= 94 and $inningcount is an odd)[The visiting team scored two runs. (set: $awayTeamScore to it + 2) (if: $inningcount <= 6)[[[Any specific players behind these happenings?|HomeTeamPitcherGoatCheck]]](else:)[[[Any specific players behind these happenings?|VisitingTeamHitterHeroCheck]]]] \(if: $roll >= 88 and $roll <= 94 and $inningcount is an even)[The home team scored two runs. (set: $homeTeamScore to it + 2) (if: $inningcount <= 6)[[[Any specific players behind these happenings?|HomeTeamHitterHeroCheck]]](else:)[[[Any specific players behind these happenings?|VisitingTeamPitcherGoatCheck]]]] \(if: $roll >= 95 and $roll <= 98 and $inningcount is an odd)[The visiting team scored three runs. (set: $awayTeamScore to it + 3) (if: $inningcount <= 6)[[[Any specific players behind these happenings?|HomeTeamPitcherGoatCheck]]](else:)[[[Any specific players behind these happenings?|VisitingTeamHitterHeroCheck]]]] \(if: $roll >= 95 and $roll <= 98 and $inningcount is an even)[The home team scored three runs. (set: $homeTeamScore to it + 3) (if: $inningcount <= 6)[[[Any specific players behind these happenings?|HomeTeamHitterHeroCheck]]](else:)[[[Any specific players behind these happenings?|VisitingTeamPitcherGoatCheck]]]] \(if: $roll >= 99 and $inningcount is an odd)[The visiting team scored four runs. (set: $awayTeamScore to it + 4) (if: $inningcount <= 6)[[[Any specific players behind these happenings?|HomeTeamPitcherGoatCheck]]](else:)[[[Any specific players behind these happenings?|VisitingTeamHitterHeroCheck]]]] \(if: $roll >= 99 and $inningcount is an even)[The home team scored four runs. (set: $homeTeamScore to it + 4) (if: $inningcount <= 6)[[[Any specific players behind these happenings?|HomeTeamHitterHeroCheck]]](else:)[[[Any specific players behind these happenings?|VisitingTeamPitcherGoatCheck]]]]Home Game is an interactive sport/performance experience that's informed by what happens during a live baseball game. It's intended to be "layered" onto a competitively-played, unscripted sporting event. This script (written in <a href="https://twinery.org/" target="_blank">Twine</a>) tries to roughly simulate what those game events might be, in the following ways: * Once the game starts in the script, roughly every 7 click-choices triggers the end of a half-inning of play. An actual ballgame would have more variable half-inning lengths than this, of course! * The number of runs scored per half-inning is randomly generated with the following probabilities (based on <a href="https://gregstoll.com/~gregstoll/baseball/runsperinning.html" target="_blank">these statistics</a>): ** 0 runs: 72% of the time ** 1 run: 15% ** 2 runs: 7% ** 3 runs: 4% ** 4 runs: 2% * In each half-inning, there's a 50% chance that one of three different players has a "story-triggering" event. ([[More on the "casting" of these players here.|ScriptNotesPlayerCasting]]) For the first three innings, a max of one home team pitcher-related storyline and one home team hitter-related storyline can be activated — based on how runs are scored or given up. The next three innings are the same for the visiting team pitcher and hitters. ** In the actual experience, these storylines would be determined in a more dynamic way! This simplification is just for showing how these elements work in a broad-sketch sort of way. [[Return.|Title Page]]Before Home Game is performed/played, a number of players on both the home and visiting team should be “cast” in a number of roles. Note that they shouldn’t do anything differently because of this, as far as how they play…they are more like archetypes that they align with (or take on fictionally, if need be). This “casting” is referenced by announcers and other media throughout the game, and also has an impact on which big experiential move is launched in the latter third of the game. * Home Team ** Promising Rookie (starting pitcher) ** Flashy Up-And-Comer (position player) ** Clubhouse Leader (position player) * Visiting Team ** Crafty Veteran (starting pitcher) ** Scrappy Overachiever (position player) ** Played-On-Both-Teams (position player) [[Return.|ScriptNotes]](if: $homeTeamScore > $awayTeamScore and $awayTeamWinning >=1)[They're selling "Comeback" corn dogs. (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''CONCESSIONS WORKER'' Comeback Corn Dogs, a special for when the home team just doesn't quit!] [[Mmm.|BuyCornDog]] [[Pass.|WatchGameInSeats]] ] \ (else-if: $awayTeamScore > $homeTeamScore and $homeTeamWinning >=1)[They're selling "Frittered Away" banana fritters. (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''CONCESSIONS WORKER'' Our lead's been frittered away, but at least we've still got THESE fritters! Hot, fresh, apple delish!] [[I wanna eat 'em.|BuyFritters]] [[Pass.|WatchGameInSeats]] ] \ (else-if: $awayTeamWinning >= 1 and $homeTeamWinning >= 1)[They're selling "Topsy-Turvy" tater tots. (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''CONCESSIONS WORKER'' Topsy Turvy tater tots, for a back-and-forth sorta game!] [[Sounds delish.|BuyTaterTots]] [[Pass.|WatchGameInSeats]] ] \ (else:)[They're selling what's obviously a rip-off of Cracker Jack. (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''CONCESSIONS WORKER'' Traditional baseball treat! Get your traditional baseball treat here!] [[Gimme!|BuyCrackerJack]] [[Pass.|WatchGameInSeats]] ] \ (display: "CommonCode")A Club Knighted tab is opened on your app. (if: $KnightedClubMemberHistory is true and $chalkGame is not false)[ You can now activate an AR experience through your phone camera. When you point it at the field, you see a pile of chalk layered over your screen with the field in the background. Something like this: <a href="https://tinypic.host/image/nAD7m"><img src="https://tinypic.host/images/2023/11/15/ComfyUI_00055_.md.png" alt="ComfyUI_00055_.md.png" border="0"></a> A timer on the screen starts. You are asked to draw two new foul lines to make the next foul ball "fair." When the time is up, the lines you've drawn stay solid on the screen, until the next foul ball is hit. [[You succeeded — the foul ball landed between your AR chalk lines.|ChalkGameSuccessApp]] [[You failed — the foul ball landed elsewhere.|ChalkGameFailApp]] ](else-if: $KnightedInitiationFeed is true)[ (if: $inningcount <= 9)[ //This is a to-be-written feed you can use and access if you've been initiated into Club Knighted.// [[Return.|AppCheck]] ](else-if: $inningcount > 10)[ //This is a to-be-written feed you can use and access if you've been initiated into Club Knighted.// [[Return.|AppCheck]] ] ](else:)[ STAY ALERT, it reads. [[Return.|AppCheck]] ] (display: "appCommonCode")You're back near the entrance and metal detectors. [[Explore an alcove behind the detectors.|MetalDetectorPoster]] [[Leave the stadium.|LeaveStadium]] [[Return to the concourse.|ExploreMainBranch]] (display: "CommonCode")You move through the security line, until you get to the metal detector. (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''SECURITY SCREENER'' Everything out of your pockets, please...keys, phones, expectations...] [[Make light convo with the Screener.|MetalDetectorConvo]] [[Head to your seat for the pregame events.|GoToPreGameStart]]The stadium's "normal" exterior branding is replaced with branding for something called Klarines. This branding is minimalistic, abstract, and inscrutable — something like in the image below: <a href="https://ibb.co/qFpKWkm3"><img src="https://i.ibb.co/VpTRQ2Mc/Stadium-Outside-View.png" alt="Stadium-Outside-View" border="0"></a> None of it specifies what Klarines actually //is//. [[Return.|START]](if: $newGameSuitesCompleted is true)[The same attendant's at the entrance to this elevator. (align:"=><==")+(box:"======XXXXXXXXXXXXXXX====")[''ELEVATOR ATTENDANT'' You've done everything you can over here...looks like it's all up to you now..] [[Return.|ExploreMainBranch]] (display: "CommonCode")]\ (else:)[There's an attendant at the entrance to this elevator. (align:"=><==")+(box:"======XXXXXXXXXXXXXXX====")[''ELEVATOR ATTENDANT'' Sorry...access to this area is restricted to those who are participating in the New Game. That's all I'm permitted to say.] (if: $klarinesNewGameSuiteAccess is true)[[[Show him the New Game QR code on your phone.|NewGameElevatorToSuite]]] [[Return.|ExploreMainBranch]] (display: "CommonCode")][[NewGameSuitesMeetingPt6]] (set: $newGameEngagementAnswer to false) (set: $newGameSuiteChoice to 3)[[Click|EndTopOfInning1]] (set: $inningcount to 16) (set: $promisingRookieStoryline to 2) (set: $homeHitterStoryline to 3) (set: $craftyVeteranStoryline to 2) (set: $visitingHitterStoryline to 1) (set: $hackerCodeGiving to 2)[[Click|RadioInSeats]] (set: $inningcount to 5) (set: $homeTeamScore to 1) (set: $awayTeamScore to 1) (set: $promisingRookieStoryline to 1) (set: $homeHitterStoryline to 3) (set: $craftyVeteranStoryline to 0) (set: $visitingHitterStoryline to 0)[[Click|KlarinesStageEntrance]] (set: $phoneAnthemSuccess to false)[[Click|ConcessionsStandEntrance]] (set: $homeTeamScore to 3) (set: $awayTeamScore to 2) (set: $awayTeamWinning to 1) (set: $diehardMeeting to true) (set: $inningcount to 2)[[ClubInitiationStart]] (set: $diehardFanInfo to true)This is what you received: <a href="https://ibb.co/Fb4d1YW9"><img src="https://i.ibb.co/qMY28gnz/Home-Game-Email-Confirm.png" alt="Home-Game-Email-Confirm" border="0"></a> [[Return.|START]]<html> <head> <style> body { font-family: 'Arial', sans-serif; background-color: #f5f5f5; text-align: center; padding: 50px; } h1 { color: #1E90FF; /* Changed color to blue */ font-size: 3em; margin-bottom: 10px; /* Reduced spacing after title */ } h2 { color: #C0C0C0; font-size: 2em; margin-top: 0; /* Align image closer to subtitle */ } p { color: #888; font-size: 1.2em; margin-bottom: 0.2em; /* Reduced space between paragraphs */ } .small-text { color: #888; font-size: 1em; /* Smaller text size */ } a { color: #428bca; text-decoration: none; } .image-container { margin: 20px 0; /* Add spacing around the image */ } img { max-width: 80%; /* Increased image size */ height: auto; } </style> </head> <body> <h1>Home Game</h1> <div class="image-container"> <a href="https://ibb.co/PGgjbBg5"> <img src="https://i.ibb.co/0yr2WPrf/Chat-GPT-Image-Dec-2-2025-08-39-47-AM.png" alt="Baseball-themed Image"> </a> </div> <h2>A playable play inside a baseball game</h2> <p>script-in-progress written by Drew Paryzer</p> <p class="small-text">with programming assistance from Minh-Anh Day</p> <br> [[Click here to begin.|START]] [[Click here for notes on how this script is structured.|ScriptNotes]] <!-- Footer --> <p class="small-text"> //This script uses images created with generative AI (for illustrative purposes). It also uses LLM-generated text, with prompts written by the author.// </p> </body> </html>[[MiddleOfInning1]] (set: $inningcount to 5)[[DiehardEnclavePart2Contd]] (set: $promisingRookieStoryline to 1) (set: $visitingHitterStoryline to 1) (set: $diehardGameEventList to "") (if: $promisingRookieStoryline is 1)[(set: $diehardGameEventList to it + ("USC's promising rookie pitcher is doing well, "))] (if: $promisingRookieStoryline is 2)[(set: $diehardGameEventList to it + ("USC's promising rookie pitcher is struggling a bit, "))] (if: $homeHitterStoryline is 1)[(set: $diehardGameEventList to it + ("USC's flashy up-and-coming position player star helped the team score, "))] (if: $homeHitterStoryline is 2)[(set: $diehardGameEventList to it + ("USC's veteran clubhouse leader helped the team score, "))] (if: $homeHitterStoryline is 3)[(set: $diehardGameEventList to it + ("USC's flashy up-and-coming position player star is struggling a bit, "))] (if: $homeHitterStoryline is 4)[(set: $diehardGameEventList to it + ("USC's veteran clubhouse leader is struggling a bit, "))] (if: $craftyVeteranStoryline is 1)[(set: $diehardGameEventList to it + ("The visiting team's crafty veteran pitcher is doing well, "))] (if: $craftyVeteranStoryline is 2)[(set: $diehardGameEventList to it + ("The visiting team's crafty veteran pitcher is struggling a bit, "))] (if: $visitingHitterStoryline is 1)[(set: $diehardGameEventList to it + ("The visiting team's scrappy, overachieving position player helped them score, "))] (if: $visitingHitterStoryline is 2)[(set: $diehardGameEventList to it + ("The visiting team's star player — who used to be on USC — is helped their team score, "))] (if: $visitingHitterStoryline is 3)[(set: $diehardGameEventList to it + ("The visiting team's scrappy, overachieving position player is struggling a bit, "))] (if: $visitingHitterStoryline is 4)[(set: $diehardGameEventList to it + ("The visiting team's star player — who used to be on USC — is struggling a bit, "))][[KlarinesNewGameAppScore]] (set: $homeTeamScore to 5) (set: $inningcount to 12)[[SeatKnightedClubApp]] (set: $KnightedClubMemberHistory to true)[[EndgameNoMissionPt1]][[DiehardEnclavePart1]] (set: $promisingRookieStoryline to 1) (set: $visitingHitterStoryline to 3)[[AnnouncersOneOnOneIntro]] (set: $currentPassage to "ExploreMainBranch")TEST ANNOUNCER SEQUENCE This passage sets up test conditions to verify the Announcer one-on-one system works properly. [[Start the Announcer sequence|AnnouncersAppOneOnOneSchedule]] (set: $inningcount to 14) (set: $announcersOneOnOneDone to false) (set: $homeTeamNewEra to true) (set: $visitingTeamChip to true) (set: $talkedToScreener to true) (set: $seeRootTeamPoster to true) (set: $phoneAnthemSuccess to true) (set: $merchRotatingShelfSeen to true) (set: $specialZonesTeeSeen to true) (set: $retroTechTeeSeen to true) (set: $klarinesStageShowWatched to true) (set: $wentDownPlaygroundSlide to true) (set: $klarinesBurnoutsYay to true) (set: $chalkGameSuccess to true) (set: $newGameAppPlaying to true) (set: $diehardSign to true) (set: $hackersInitiated to true) (set: $KnightedInitiationFeed to true) (set: $concessionsTrier to 3) (set: $listenToRadio to true) (set: $watchingGameCounter to 3) (set: $photoWithHomeGameMascot to true) Expected results: - Game summary should mention "talent vs motivation" conflict - Should track 17 different actions in the list - AI should generate personalized announcer commentary - Should reference your response to the announcer's question - Final output should weave your actions into a baseball at-bat metaphor[[KlarinesNewGameAppOpen]] (set: $newGameAppPlaying to true) (set: $inningcount to 3)[[Untitled Passage 9]] (set: $inningcount to 0) (set: $homeTeamScore to 3) (set: $awayTeamScore to 2) (set: $missions to (a: "//In Process//"))(append: ?SideBar)[ <span style="font-size: 12px; line-height: 1.2; margin: 0; padding: 0;"> 🏟️ SCORE: Home $homeTeamScore - Away $awayTeamScore ⚾ INNING: (if: $inningcount is 0)[ Top of 1 ](else-if: $inningcount is 1)[ Bottom of 1 ](else-if: $inningcount % 2 is 0)[ Top of (floor: $inningcount / 2 + 1) ](else:)[ Bottom of (floor: $inningcount / 2 + 1) ] 📌 STORYLINES: <span style="display: inline; margin: 0; padding: 0;"> (for: each _mission, ...$missions)[ <span style="margin: 0; padding: 0;"> _mission</span> ] </span> 📱 [[Open Phone App|AppCheck]] </span> ][(if: $roll2 <= 25 and $visitingHitterStoryline is 0)[The Scrappy Overachiever blows a chance at bringing runs in for the visiting team. (set: $visitingHitterStoryline to 3)] (else-if: $roll2 >= 26 and $roll2 <= 50 and $visitingHitterStoryline is 0)[The Played-On-Both-Teams blows a chance at bringing in runs for the visiting team. (set: $visitingHitterStoryline to 4)] (else:)[No specific players shined (or dimmed) this half-inning.]] [[Continue.|MiddleOfInning1]][(if: $roll2 <= 50 and $visitingHitterStoryline is 0)[The Scrappy Overachiever is at the center of the visiting team's scoring. (set: $visitingHitterStoryline to 1)] (else-if: $roll2 >= 51 and $visitingHitterStoryline is 0)[The Played-On-Both-Teams is at the center of the visiting team's scoring. (set: $visitingHitterStoryline to 2)] (else:)[No specific players shined (or dimmed) this half-inning.]] [[Continue.|MiddleOfInning1]](if: $craftyVeteranStoryline is 0)[ The visiting team's crafty veteran pitcher struggles to command his pitches, leading to the home team's scoring. (set: $craftyVeteranStoryline to 2) ](else:)[ No specific players shined (or dimmed) this half-inning. ] [[Continue.|MiddleOfInning1]](if: $roll2 <= 50 and $craftyVeteranStoryline is 0)[ The visiting team's crafty veteran pitcher retires the home team's side in order, showing great command and guile. (set: $craftyVeteranStoryline to 1) ](else:)[ No specific players shined (or dimmed) this half-inning. ] [[Continue.|MiddleOfInning1]]You watch the teams play the (if: $inningcount is 1)[(print: "top of the 1st inning.") ](else-if: $inningcount is 2)[(print: "bottom of the 1st inning.") ](else-if: $inningcount is 3)[(print: "top of the 2nd inning.") ](else-if: $inningcount is 4)[(print: "bottom of the 2nd inning.") ](else-if: $inningcount is 5)[(print: "top of the 3rd inning.") ](else-if: $inningcount is 6)[(print: "bottom of the 3rd inning.") ](else-if: $inningcount is 7)[(print: "top of the 4th inning.") ](else-if: $inningcount is 8)[(print: "bottom of the 4th inning.") ](else-if: $inningcount is 9)[(print: "top of the 5th inning.") ](else-if: $inningcount is 10)[(print: "bottom of the 5th inning.") ](else-if: $inningcount is 11)[(print: "top of the 6th inning.") ](else-if: $inningcount is 12)[(print: "bottom of the 6th inning.") ](else-if: $inningcount is 13)[(print: "top of the 7th inning.") ](else-if: $inningcount is 14)[(print: "bottom of the 7th inning.") ](else-if: $inningcount is 15)[(print: "top of the 8th inning.") ](else-if: $inningcount is 16)[(print: "bottom of the 8th inning.") ](else-if: $inningcount is 17)[(print: "top of the 9th inning.") ](else-if: $inningcount is 18)[(print: "bottom of the 9th inning.")] \ Concessions people walk up and down the steps near you, selling their wares. [[Put your full focus on the game.|FullFocusOnGame]] [[Wave down a concession person.|SeatConcessionPerson]] [[Return.|InSeats]] (display: "CommonCode") (set: $watchingGame to (either: "The third basemen seems to be spitting a lot more than the other fielders.", "Is there a patch of grass in right field that's painted silver? Or are you just imagining that?", "The umpire calls a strike with a grunt so explosive it makes you concerned for his diaphragm.", "A bat boy delivers a new set of balls to the umpire. One of them looks to be cut in half; the ump puts that one in a different pocket.", "There seems to be a small banner stuck in the netting around home plate, but you're too far away to read it.", "You hear the buzzing of a drone somewhere overhead.", "It looks like one of the players' bats is painted with the words 'Practice failure.'", "Both of the on-deck circles are gaudily painted with Klarines branding."))(set: $previousPassage to $currentPassage) (set: $currentPassage to (passage:)'s name) (set: $clickCount to it + 1) (if: $clickCount is 10)[(go-to: "EndTopOfInning1")]The managers return to the dugout. Elsewhere on the field, a squad of Klarines swag-clad people drag a comically-massive black bag onto the middle of the field. (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''PA ANNOUNCER'' Attention once again, fans: did the previous announcement make you realize you didn't know where your phone was for at least a portion of a second? Our Klarines Home Game sponsors want you to have your personal device in your consciousness at all times during today's event. And if, goodness forbid, you have //misplaced//your phone...fear not. Please lend your focus to our Klarines Representatives, who will conduct a short lost-and-found with the phones they've recovered from around the stadium.] As a couple of the Representatives opens the bag, it starts to MOVE AROUND! (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''PA ANNOUNCER'' Wait a second...is the lost-and-found bag MOVING?!?] [[Suddenly...|PreGameMascotPart2]](align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[ ''PA ANNOUNCER'' Fans: yes. There's one more thing. Please rise and kindly take out your phones for the playing of our National Anthem. Performing for us today are those of you who open the Klarines app and turn your volume up as high as it can go. Please give a warm Home Game round of applause to: yourself.] [[Begin.|PreGameNationalAnthemPlay]](set: $appBuzzClicked to false)(set: $appBuzzOverride to false)(set: $paStep to 0)(set: $paText to "Oh, say can you see")(set: $optionsClicked to false)(set: $clickTime to 0) <!-- Preloaded text --> <!-- 6 CLICKABLE OPTIONS: --> <span>|anthemOptions>[ (link: "Spin your phone / move it unusually")[ (replace: ?anthemOptions)[<i>You spun your phone, creating swirling echoes in the Anthem that plays out of your phone.</i>] (set: $optionsClicked to true) (set: $clickTime to 0) ] (link: "Hold your phone high and steady")[ (replace: ?anthemOptions)[<i>You hold your phone high, raising the volume of the Anthem's melody coming out of your phone.</i>] (set: $optionsClicked to true) (set: $clickTime to 0) ] (link: "Don't take your phone out")[ (replace: ?anthemOptions)[<i>The Anthem doesn't play out of your phone, as it stays tucked away...</i>] (set: $optionsClicked to true) (set: $clickTime to 0) ] (link: "Tap/shake the phone")[ (replace: ?anthemOptions)[<i>Your taps/shakes cause the Anthem's playback out of your phone to glitch and distort...</i>] (set: $optionsClicked to true) (set: $clickTime to 0) ] (link: "Move your phone in unison with others around you")[ (replace: ?anthemOptions)[<i>Syncing with others adds layered harmonies to the Anthem coming out of your collective phones...</i>] (set: $optionsClicked to true) (set: $clickTime to 0) ] (link: "Hold phone steady and watch it closely")[ (replace: ?anthemOptions)[<i>Focusing on the screen triggers a heavy percussive beat behind the Anthem playback.</i>] (set: $optionsClicked to true) (set: $clickTime to 0) ] ] (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[ ''NATIONAL ANTHEM'' <span>|paOutput>[$paText]</span> ] <span>|appAlert>[]</span> <span>|nextLink>[]</span> (live: 0s)[ (replace: ?paOutput)[$paText] <!-- Ensure initial text appears immediately --> ] (live: 1s)[ (if: $optionsClicked is true and $paStep < 14)[ (set: $clickTime to $clickTime + 1) (if: $clickTime >= 4)[ (set: $optionsClicked to false) (set: $clickTime to 0) (replace: ?anthemOptions)[ (link: "Spinning your phone, moving it in unusual ways")[ (replace: ?anthemOptions)[<i>You spun your phone, creating swirling echoes in the Anthem.</i>] (set: $optionsClicked to true) (set: $clickTime to 0) ] (link: "Holding it high and steady")[ (replace: ?anthemOptions)[<i>You hold your phone high, clarifying the Anthem's melody.</i>] (set: $optionsClicked to true) (set: $clickTime to 0) ] (link: "Not taking your phone out/participating")[ (replace: ?anthemOptions)[<i>You keep your phone away, reducing the Anthem's sound...</i>] (set: $optionsClicked to true) (set: $clickTime to 0) ] (link: "Tapping/shaking the phone/interrupting playback")[ (replace: ?anthemOptions)[<i>Your taps/shakes cause the Anthem to glitch and distort...</i>] (set: $optionsClicked to true) (set: $clickTime to 0) ] (link: "Syncing up with movements of others around you")[ (replace: ?anthemOptions)[<i>Syncing with others adds layered harmonies to the Anthem...</i>] (set: $optionsClicked to true) (set: $clickTime to 0) ] (link: "Watching the screen closely as it plays")[ (replace: ?anthemOptions)[<i>Focusing on the screen triggers a heavy percussive beat.</i>] (set: $optionsClicked to true) (set: $clickTime to 0) ] ] ] ] ] (live: 2s)[ (if: $paStep is 0)[ (set: $paStep to 1) (set: $paText to $paText + " By the dawn's early light") (replace: ?paOutput)[$paText] ](else-if: $paStep is 1)[ (set: $paStep to 2) (set: $paText to $paText + " What so proudly we hailed") (replace: ?paOutput)[$paText] ](else-if: $paStep is 2)[ (set: $paStep to 3) (set: $paText to $paText + " At the twilight's last gleaming") (replace: ?paOutput)[$paText] ](else-if: $paStep is 3)[ (set: $paStep to 4) (set: $paText to $paText + " Whose broad stripes and bright stars") (replace: ?paOutput)[$paText] ](else-if: $paStep is 4)[ (set: $paStep to 5) (set: $paText to $paText + " Through the perilous fight") (replace: ?paOutput)[$paText] ](else-if: $paStep is 5)[ (set: $paStep to 6) (set: $paText to $paText + " O'er the ramparts we watched") (replace: ?paOutput)[$paText] ](else-if: $paStep is 6)[ (set: $paStep to 7) (set: $paText to $paText + " Were so gallantly streaming") (replace: ?paOutput)[$paText] ](else-if: $paStep is 7)[ (set: $paStep to 8) (set: $paText to $paText + " And the rockets red glare") (replace: ?paOutput)[$paText] ](else-if: $paStep is 8)[ (set: $paStep to 9) (set: $paText to $paText + " The bombs bursting in air") (replace: ?paOutput)[$paText] ](else-if: $paStep is 9)[ (set: $paStep to 10) (set: $paText to $paText + " Gave proof through the night") (replace: ?paOutput)[$paText] ](else-if: $paStep is 10)[ (set: $paStep to 11) (set: $paText to $paText + " That our flag was still there") (replace: ?paOutput)[$paText] ](else-if: $paStep is 11)[ (set: $paStep to 12) (set: $paText to $paText + " O say does that Star-Spangled Banner yet wave") (replace: ?paOutput)[$paText] ](else-if: $paStep is 12)[ (set: $paStep to 13) (set: $paText to $paText + " O'er the land of the free") (replace: ?paOutput)[$paText] ](else-if: $paStep is 13)[ (set: $paStep to 14) (set: $paText to $paText + " And the home of the brave") (replace: ?paOutput)[$paText] (replace: ?anthemOptions)[] (replace: ?nextLink)[(link-goto: "The National Anthem ends, and the game begins.", "InSeats")] (stop:) ] ]It's the day of the game. You've downloaded the app and brought earbuds/earphones, too. You find yourself at the entrance of (what seems to be called) Klarines Field. [[Look at your Email confirmation for your ticket purchase.|PhonePhoneTicketPurchaseEmail]] [[Put your phone down.|GoToFirstPhone]] (set: $homeTeam to false) (set: $awayTeam to false) (set: $homeTeamScore to 0) (set: $awayTeamScore to 0) (set: $promisingRookieStoryline to 0) (set: $homeHitterStoryline to 0) (set: $craftyVeteranStoryline to 0) (set: $scrappyOverachieverStoryline to 0) (set: $onbaseSpecialistStoryline to 0) (set: $awayTeamWinning to 0) (set: $homeTeamWinning to 0) (set: $tieGame to 0) (set: $celebrationMove to false) (set: $watchingGameCounter to 0) (set: $awayTeamHat to false) (set: $homeTeamHat to false) (set: $liar to false) (set: $inningcount to 1) (set: $promisingRookieStoryline to 0) (set: $craftyVeteranStoryline to 0) (set: $homeHitterStoryline to 0) (set: $visitingHitterStoryline to 0) (set: $celebrationMove to false) (set: $hackerCodeGiving to 0) (set: $preGameWanderer to 0) (set: $awayTookLead to false) (set: $homeTookLead to false) (set: $missions to (a: "//In Process//"))This is what you received: <a href="https://ibb.co/Fb4d1YW9"><img src="https://i.ibb.co/qMY28gnz/Home-Game-Email-Confirm.png" alt="Home-Game-Email-Confirm" border="0"></a> [[Return.|PhoneSTART]]...a mascot jumps out of the bag! <a href="https://ibb.co/hRtSC5DK"><img src="https://i.ibb.co/GvbqFwcV/Chat-GPT-Image-Dec-2-2025-03-39-06-PM.png" alt="Chat-GPT-Image-Dec-2-2025-03-39-06-PM" border="0"></a> It's amped! The Attendants are loving it — maybe they do a little synchronized dance together! (align:"=><=")+(box:"======XXXXXXXXXXXXXXX====")[''PA ANNOUNCER'' Well look at that, attention-havers! The lost phones seem to have fused to one another and come to life! Let me introduce you to Smartie: the mascot of the Klarines Home Game! Smartie is fun, feisty, and living proof that today — in this stadium — the device in your pocket has powers beyond our mortal comprehension! Come visit Smartie in the Klarines Fun Zone if you want to learn more!] [[Smartie and the Representatives leave the field.|PreGameNationalAnthem]]